它是什么?
官网告诉我们,ESLint是一个用来识别ECMAScript/JavaScript并且按照规则给出报告的代码检测工具,他就是一个工具,检查代码。
代码检查是一种静态的分析,常用于寻找有问题的模式或者代码,并且不依赖于具体的编码格式。对大多数编程语言来说都会有代码检查,一般编译程序会内置检查工具。
JavaScript是一个动态的弱型语言,在开发过程中比较容易出错。因为没有编译,为了寻找JavaScript代码错误同好穿那个需要在执行过程中不断的调试。
ESLint的安装?
npm install eslint #安装到命令行目前所在目录下
npm install -g eslint #-g(global)全局安装
可以通过npm config set prefix设置下载路径
npm install -save eslint #-save表示将包安装到当前项目的node_modules文件下
并在pakeage文件的dependencies节点写入依赖
npm install -save-dev #-save-dev将包安装在当前项目的node_modules文件夹下
并在写入pakeage文件的dependencies字段中
全局安装
1.安装
$ npm install -g eslint
2.配置文件
$ npm install -g eslint
3.运行ESLint
$ npm install -g eslint
ESLint和 JSLint、JSHint的区别:
1.ESLint 使用 Espree 解析 JavaScript。
2.ESLint 使用 AST 去分析代码中的模式。
3.ESLint 是完全插件化的。每一个规则都是一个插件并且你可以在运行时添加更多的规则。
ESLint的特点:
1.内置规则和自定义规则共用一套规则 API。
2.内置的格式化方法和自定义的格式化方法共用一套格式化 API。
3.额外的规则和格式化方法能够在运行时指定。
4.用户可以将结果设置成警告或者错误。
5.每条规则都是各自独立的,可以根据项目情况选择开启或关闭。
配置代码注释
ESLint附带有大量的规则,可以使用注释或配置文件修改你项目中要使用的规则。
当指定来自插件的规则时,确保删除 eslint-plugin- 前缀。ESLint 在内部只使用没有前缀的名称去定位规则。
/* eslint eqeqeq: "off", curly: "error" */ eqeqeq 规则被关闭,curly 规则被打开,定义为错误级别
/* eslint "plugin1/rule1": "error" */ plugin1/rule1 表示来自插件 plugin1 的 rule1 规则
可以在你的文件中使用一下格式的块注释来临时禁制规则出现警告:
/* eslint-disable */
alert('foo');
/* eslint-enable */
你也可对指定的规则启用或禁用警告:
/* eslint-disable no-alert, no-console */
alert('foo');
console.log('bar');
/* eslint-enable no-alert, no-console */
如果在整个文件范围内禁止规则出现警告,将/* eslint-disable */块注释放在文件顶部:
/* eslint-disable */
alert('foo');
你也可以对整个文件启用或禁用警告:
/* eslint-disable no-alert */
// Disables no-alert for the rest of the file
alert('foo');
ESLint检查规则
部分来源于网络,完整规则查看官方文档
"no-alert": 0,//禁止使用alert confirm prompt
"no-array-constructor": 2,//禁止使用数组构造器
"no-bitwise": 0,//禁止使用按位运算符
"no-caller": 1,//禁止使用arguments.caller或arguments.callee
"no-catch-shadow": 2,//禁止catch子句参数与外部作用域变量同名
"no-class-assign": 2,//禁止给类赋值
"no-cond-assign": 2,//禁止在条件表达式中使用赋值语句
"no-console": 2,//禁止使用console
"no-const-assign": 2,//禁止修改const声明的变量
"no-constant-condition": 2,//禁止在条件中使用常量表达式 if(true) if(1)
"no-continue": 0,//禁止使用continue
"no-control-regex": 2,//禁止在正则表达式中使用控制字符
"no-debugger": 2,//禁止使用debugger
"no-delete-var": 2,//不能对var声明的变量使用delete操作符
"no-div-regex": 1,//不能使用看起来像除法的正则表达式/=foo/
"no-dupe-keys": 2,//在创建对象字面量时不允许键重复 {a:1,a:1}
"no-dupe-args": 2,//函数参数不能重复
"no-duplicate-case": 2,//switch中的case标签不能重复
"no-else-return": 2,//如果if语句里面有return,后面不能跟else语句
"no-empty": 2,//块语句中的内容不能为空