nodejs 前端工具总结

htmlhint

https://github.com/yaniswang/HTMLHint

使用

var HTMLHint  = require("htmlhint").HTMLHint;

var messages = HTMLHint.verify(code, options);

选项

{

    'tagname-lowercase': true,

    'attr-lowercase': true,

    'attr-value-double-quotes': true,

    'doctype-first': true,

    'tag-pair': true,

    'spec-char-escape': true,

    'id-unique': true

}

返回

[{

    type: 'error',

    message: 'Id redefinition of [ row ].',

    raw: ' id="row"',

    evidence: '<div id="row" class="clearfix">',

    line: 114,

    col: 5,

    rule:

    {

        id: 'id-unique',

        description: 'Id must be unique.',

        link: 'https://github.com/yaniswang/HTMLHint/wiki/id-unique'

    }   

}]

csslint

https://github.com/stubbornella/csslint

使用

var csslint = require('csslint').CSSLint;

var result = csslint.verify(code, rules);

选项

...

返回

{

    messages:

        [{ type: 'warning',

            line: 1,

            col: 1,

            message: 'The universal selector (*) is known to be slow.',

            evidence: '*{}',

            rule: [Object]

        }],

    stats: [ floats: 0, 'font-sizes': 0, important: 0, 'rule-count': 1 ],

    ruleset: {}

}

jslint

https://github.com/reid/node-jslint

使用

var jslint = require('jslint');

var result = jslint(code);

var data = jslint.data();

选项

anon :true  //匿名函数声明中function关键字与()之间的空白可以被省略

bitwise : true  //允许按位运算

browser : true  //浏览器(标准)是预定义的全局

cap : true  //允许大写的HTML

continue : true  //容忍continuation语句

css : true  //允许检查CSS

debug : true  //允许debuger语句

devel : true  //允许控制台语句console、alert语句

eqeq : true  //允许==和!=运算符

es5 : true  //允许ECMAScript 5 的语法

evil : true  //允许使用eval

forin : true  //for in声明的中的key不需要使用hasOwnProperty过滤

fragment : true  //允许检查HTML片段

indent : 空白缩进的数量,默认建议4个空格

maxerr :  允许做大的错误数,默认是50

maxlen : 允许单行的最大长度

newcap : true  //构造函数的首字母大小写可以被忽略

node : true  //node.js是预定义的全局

nomen : true  //允许标识符以_开头

on : true  //允许在HTML使用类似onclick这样的事件处理

passfail : true  //应该在扫描到第一个错误时停止

plusplus : true  //允许++递增 或 --递减

properties : true  //由于 JavaScript 是松散类型、动态对象的语言,在编译时不可能确定,如果希望检查属性名称拼写,所有内置的属性名称必须写在 /*properties*/中

regexp : true  //允许正则表达式文本中含有.

rhino : true  //假设是在rhino环境中

undef : true  //变量的定义顺序可以是混乱的,比如var a = b.name, b = {name: "b"};

unparam : true  //允许忽略未使用的参数

sloppy : true  //'use strict'标注是可选的

sub : true  //容忍所有的下标表示法,如果属性名是一个合法的标识符,建议用.表示法

vars : true  //允许每个函数有多个var声明

white : true  //容忍多余的空白

widget : true  //假设是在Yahoo Widgets环境中

windows : true  //MS Windows的特定全局应该是预定义的

返回

{

    errors: [

        {

            { id: '(error)',

              raw: 'Unexpected dangling \'_\' in \'{a}\'.',

              evidence: '    environment.bind("touchstart", _onTouchStart);

              line: 25,

              character: 36,

              a: '_onTouchStart',

              b: undefined,

              c: undefined,

              d: undefined,

              reason: 'Unexpected dangling \'_\' in \'_onTouchStart\'.' },

        }

    ]

}

jshint

使用

var JSHINT = require("jshint").JSHINT;

var result = jshint(js);

选项

asi         : true, // if automatic semicolon insertion should be tolerated

bitwise     : true, // if bitwise operators should not be allowed

boss        : true, // if advanced usage of assignments should be allowed

browser     : true, // if the standard browser globals should be predefined

camelcase   : true, // if identifiers should be required in camel case

couch       : true, // if CouchDB globals should be predefined

curly       : true, // if curly braces around all blocks should be required

debug       : true, // if debugger statements should be allowed

devel       : true, // if logging globals should be predefined (console, alert, etc.)

dojo        : true, // if Dojo Toolkit globals should be predefined

eqeqeq      : true, // if === should be required

eqnull      : true, // if == null comparisons should be tolerated

es5         : true, // if ES5 syntax should be allowed

esnext      : true, // if es.next specific syntax should be allowed

evil        : true, // if eval should be allowed

expr        : true, // if ExpressionStatement should be allowed as Programs

forin       : true, // if for in statements must filter

funcscope   : true, // if only function scope should be used for scope tests

gcl         : true, // if JSHint should be compatible with Google Closure Linter

globalstrict: true, // if global "use strict"; should be allowed (also enables 'strict')

immed       : true, // if immediate invocations must be wrapped in parens

iterator    : true, // if the `__iterator__` property should be allowed

jquery      : true, // if jQuery globals should be predefined

lastsemic   : true, // if semicolons may be ommitted for the trailing

                    // statements inside of a one-line blocks.

latedef     : true, // if the use before definition should not be tolerated

laxbreak    : true, // if line breaks should not be checked

laxcomma    : true, // if line breaks should not be checked around commas

loopfunc    : true, // if functions should be allowed to be defined within

                    // loops

mootools    : true, // if MooTools globals should be predefined

multistr    : true, // allow multiline strings

newcap      : true, // if constructor names must be capitalized

noarg       : true, // if arguments.caller and arguments.callee should be

                    // disallowed

node        : true, // if the Node.js environment globals should be

                    // predefined

noempty     : true, // if empty blocks should be disallowed

nonew       : true, // if using `new` for side-effects should be disallowed

nonstandard : true, // if non-standard (but widely adopted) globals should

                    // be predefined

nomen       : true, // if names should be checked

onevar      : true, // if only one var statement per function should be

                    // allowed

passfail    : true, // if the scan should stop on first error

phantom     : true, // if PhantomJS symbols should be allowed

plusplus    : true, // if increment/decrement should not be allowed

proto       : true, // if the `__proto__` property should be allowed

prototypejs : true, // if Prototype and Scriptaculous globals should be

                    // predefined

rhino       : true, // if the Rhino environment globals should be predefined

undef       : true, // if variables should be declared before used

scripturl   : true, // if script-targeted URLs should be tolerated

shadow      : true, // if variable shadowing should be tolerated

smarttabs   : true, // if smarttabs should be tolerated

                    // (http://www.emacswiki.org/emacs/SmartTabs)

strict      : true, // require the "use strict"; pragma

sub         : true, // if all forms of subscript notation are tolerated

supernew    : true, // if `new function () { ... };` and `new Object;`

                    // should be tolerated

trailing    : true, // if trailing whitespace rules apply

validthis   : true, // if 'this' inside a non-constructor function is valid.

                    // This is a function scoped option only.

withstmt    : true, // if with statements should be allowed

white       : true, // if strict whitespace rules apply

worker      : true, // if Web Worker script symbols should be allowed

wsh         : true, // if the Windows Scripting Host environment globals

                    // should be predefined

yui         : true, // YUI variables should be predefined



// Obsolete options

onecase     : true, // if one case switch statements should be allowed

regexp      : true, // if the . should not be allowed in regexp literals

regexdash   : true  // if unescaped first/last dash (-) inside brackets

                    // should be tolerated

// These are the JSHint options that can take any value

// (we use this object to detect invalid options)

maxlen       : false,

indent       : false,

maxerr       : false,

predef       : false,

quotmark     : false, //'single'|'double'|true

scope        : false,

maxstatements: false, // {int} max statements per function

maxdepth     : false, // {int} max nested block depth per function

maxparams    : false, // {int} max params per function

maxcomplexity: false, // {int} max cyclomatic complexity per function

unused       : true  // warn if variables are unused. Available options:

                     //   false    - don't check for unused variables

                     //   true     - "vars" + check last function param

                     //   "vars"   - skip checking unused function params

                     //   "strict" - "vars" + check all function params

返回

{

    errors: [

        {

            { id: '(error)',

              raw: 'Unexpected dangling \'_\' in \'{a}\'.',

              evidence: '    environment.bind("touchstart", _onTouchStart);

              line: 25,

              character: 36,

              a: '_onTouchStart',

              b: undefined,

              c: undefined,

              d: undefined,

              reason: 'Unexpected dangling \'_\' in \'_onTouchStart\'.' },

        }

    ]

}

你可能感兴趣的:(nodejs)