1.怎么用?
首先安装eslint(npm install eslint),可以使用3种方法对项目进行验证:
一、使用js注释直接把配置信息注入到一个代码源文件中。
二、为整个项目新建配置文件,可以有很多的不同层级的配置文件,校验文件语法时,eslint会使用最近的配置文件。(PS:我推荐,哈哈)
三、直接在package.json文件里面的eslintConfig字段指定配置,eslint会自动查找读取。
2.指定解析器选项
在.eslintrc.*文件里面的parserOptions字段里面进行配置。
ecmaVersion:当前的ECMAScript版本,默认是3和5,还可以使用6(2015)-7(2016)-8(2017)-9(2018)指定想要的版本;
sourceType:这个是项目的类型,默认是"script",但是如果你的项目的模块化的,就要用"module";
ecmaFeatures:是个对象
globalReturn: 允许全局作用下使用return
impliedStrict:启用全局严格模式
jsx:启用jsx
3.指定解析器
parse:eslint默认使用Espree作为其解析器,可以在配置文件中修改。但是我不知道改了有什么好处或者什么情况下修改它才能更优。
4.指定环境
env:一个环境定义了一组预定义的全局变量。就是写在这里,eslint检测到就不会报错了!
browser:浏览器中的全局变量,类似于window吧
node:node.js全局变量和node.js全局作用域
commonjs:CommonJs全局变量和CommonJs作用域
es6:等同于ecmaVersion:6,启用除了modules以外的所有ECMAScript6特性。
worker - Web Workers 全局变量(开启多线程,解决js的单线程问题。Worker对象)。
amd - 将 require() 和 define() 定义为像 amd 一样的全局变量。
mocha - 添加所有的 Mocha 测试全局变量(mocha是测试框架)。
jasmine - 添加所有的 Jasmine 版本 1.3 和 2.0 的测试全局变量(也是测试框架)。
jest - Jest 全局变量(还是测试框架)。
phantomjs - PhantomJS 全局变量(js API)。
protractor - Protractor 全局变量(又是测试框架)。
qunit - QUnit 全局变量(强大的js单元测试框架)。
jquery - jQuery 全局变量。
prototypejs - Prototype.js 全局变量(js API)。
shelljs - ShellJS 全局变量。用于 Node.js的Unix shell-命令
meteor - Meteor 全局变量。构建在 Node.js 之上的平台,用来开发实时网页程序。
mongo - MongoDB 全局变量。(数据库)
applescript - AppleScript 全局变量。
nashorn - Java 8 Nashorn 全局变量。
serviceworker - Service Worker 全局变量。
atomtest - Atom 测试全局变量。
embertest - Ember 测试全局变量。
webextensions - WebExtensions 全局变量。
greasemonkey - GreaseMonkey 全局变量。
5.指定全局
global:访问当前eslit配置文件的时候,出现未定义的变量,会发出警告,要在global字段里面定义全局变量,true为可以重写,false是不能重写。
6.配置插件
plugins:eslint支持使用第三方插件,使用之前必须用npm安装一下。
7.配置规则
铛铛铛,最重要的,代码监控规则上线,在配置文件里面的rules字段里面
eslint里面的所有校验规则默认都是off,就是不警告也不报错,就当没看见。但是需要代码漂亮有规范就得开启一些代码校验规则。
“quotes” : ["error", "double"]; 数组的第一个参数总是错误级别
PS:附上eslint的全部规则:http://eslint.cn/docs/rules/
8.禁用规则
块儿: 直接在文件中使用注释告诉eslint该区域禁用某些校验规则
/* eslint-disable no-alert no-console*/
/* eslint-enable no-alert no-console*/
整个文件:整个文件禁用某种校验
/* eslint-disable no-alert */ 放在文件顶部
一半儿一半儿: 对上半部分禁用,下半部分启用
/* eslint-disable no-alert */
// Disables no-alert for rest of the file
行:单行禁用,禁用多条规则,英文逗号隔开,谢谢
// eslint-disable-line no-alert /* eslint-disable-line no-alert */
// eslint-disable-next-line no-alert /* eslint-disable-next-line no-alert */
9.共享设置
类似于自定义的公共规则:
settings:{ }
10.配置文件的优先级别
同一个目录下有多个eslint配置文件,那么eslint只会用一个,按照优先级别取用。
.eslintrc.js > .eslintrc.yaml > .eslintrc.yml > .eslintrc.json >.eslintrc > package.json
如果当前目录有配置文件,父级目录也有配置那么文件,那么优先使用当前目录的配置文件。
在配置文件的root字段设置为true,那么eslint会停止在腹肌目录寻找配置文件,只用当前目录下的配置文件,应该就是这个意思!
11.忽略的文件
项目中 有些第三放的插件不需要eslint验证,就像npm安装的依赖,也就是node_modules中文件,不需要被校验。
12.官方文档地址
http://eslint.cn/docs/user-guide/configuring
13.集成到webpack
npm安装eslint-loader,在webpack基本配置里面,module字段里面添加preLoaders
放在preLoaders里面是想在编译之间先对语法和代码风格进行校验,语法不过关,直接停止webpack编译。
14.集成到编辑器
但是如果在编译的时候才进行校验还是觉得有点慢,浪费时间。我用的vs-code编辑器,在编辑器里面下载eslint的插件,编辑器就会在当前项目目录下查找.eslintrc.json文件,进行文件校验,这样在编写代码的时候就能知道哪里错,错在哪里了。
在vscode编辑器里面,选中项目打开终端,mac下执行 ./node_modules/.bin/eslint --init 就会在当前项目根目录下创建一个.eslintrc.js文件,默认情况下,逗号后面留空格。
此处参考原文链接:https://segmentfault.com/a/1190000007030775