我们都知道,如何与团队其他人高效地进行协作开发是多人团队的一个痛点。
每个人都有独立的编码习惯,虽然团队可以通过制定强制执行的规范来保持大家代码风格的尽量一致。
但是,在实际编码过程中,个人可能会不经意地继续使用着自己的代码风格,而等到发现不一致再解决又未免有点迟。
而ESLint正是为解决这类问题而生的。
ESLint是一款当前应用十分广泛的JavaScript代码检查工具。本文将从零开始,记录如何从下载配置使用ESLint来进行代码检查工作。
下载
源码下载
当前Stable版本是4.19.1,alpha版本5.0.0
NPM/Yarn
1 | # npm |
检测是否下载成功
1 | $ eslint -v # v4.19.1 |
配置
ESLint的一大优点就是它所提供的所有代码检查规则都是可配置的。个人或者团队可以根据需要,切合自身的需求来定制属于自己的代码检查规则。
规则配置
ESLint的使用需要通过命令行工具(Shell)。
在使用之前,需要先配置好ESLint的代码检查规则Rules,否则直接使用ESLint检查代码会抛出一个如下的错误。
1 | ESLint couldn't find a configuration file. To set up a configuration file for this project, please run: |
如果我们要使用ESLint来检查自己的日常JavaScript代码,而并非在项目中使用的话,可以使用eslint --init
命令来在全局生成一个规则配置文件。
eslint --init
命令会以命令行选择交互的方式来生成这个规则文件。在输入命令后,会得到如下的结果:
1 | ? How would you like to configure ESLint? (Use arrow keys) |
- Answer questions about your style* 通过回答问题来生成规则文件
- Use a popular style guide* 使用已经配置好的流行的规则(别人推荐的最佳实践)
- Inspect your JavaScript file(s)* 检查现有的JavaScript文件来自动生成
选择选项1后,ESLint会询问你一系列问题,来自动生成规则文件。问题如下:
- Are you using ECMAScript 6 features? (y/N)
- Are you using ES6 modules? (y/N)
- Where will your code run? (Press
to select, to toggle all, to inverse selection) - Browser
- Node
- Do you use CommonJS? (y/N)
- Do you use JSX? (y/N)
- What style of indentation do you use? (Use arrow keys)
- Tabs
- Spaces
- What quotes do you use for strings? (Use arrow keys)
- Double
- Single
- What line endings do you use? (Use arrow keys)
- Unix
- Windows
- Do you require semicolons? (Y/n)
选择选项2 后,会让你选择一个规则来源,默认提供3个,分别是Google, Airbnb和Standard,再次进行选择后,会让你选择规则文件的格式,格式可以为3种,分别为JavaScript
,YAML
和JSON
。
3种文件格式分别为:
1 | { |
1 | extends: google |
1 | module.exports = { |
以上3个规则库的具体规则条目,可以查看对应的下载得到的node_modules文件里文件。
选择选项3后,会以一些交互式的问题开始,问题包含选择1的前面部分,然后可以选择JavaScript
文件或者目录来进行代码风格检测,再根据检测的结果来生成配置文件(包含大量规则)。
通过对我自己的代码风格检测,生成了如下文件:
1 | module.exports = { |
规则释意
主要观察上面生成的.eslintrc.js
文件的rules部分,它整体是一个json对象。键是规则的名字,值是关于此规则的配置。
关于每条规则名称的具体含义,我们可以通过其中文意思进行理解,或者查看ESLint官方Rules介绍文档。
而配置则都由这些值开始:
"off"
或者0
- 代表关闭此条规则,即不做关于此规则的检测。"warn"
或者1
- 将此条规则设置为需要进行warning警告的规则,eslint程序的返回码不变。"error"
或者2
- 将此条规则设置为需要进行error
报错的规则,eslint程序的返回码将变为1。
使用
在不指定配置文件的情况下,会默认加载运行命令目录下符合配置文件格式(文件名和扩展名符合)的文件。
简单使用
默认检测结果会输出到命令行工具窗口里。
检测单个文件
1 | $ eslint yourfile.js |
检测多个文件
1 | $ eslint foo.js bar.js |
检测目录下所有文件
这里可以指定格式,因为ESLint不止可以检查js
文件。
1 | $ eslint your_directory/**.js |
检测目录
1 | $ eslint directory_name [directory_name2] |
复杂使用
首先,ESLint命令支持如下参数:
1 | eslint [options] file.js [file.js] [dir] |
使用NPM/Yarn命令运行代码检查
在package.json
文件的scripts
添加如下字段:
1 | { |
运行命令
1 | # NPM |
文件输出结果
可以通过-o, --output-file
参数来指定以文件的格式输出,通过-f, --format
参数来指定输出的文件格式。
1 | $ eslint -f compact file.js |
项目代码内局部检查跳过
可以通过以下注释方式来让ESLint跳过检查。
1 | /*eslint-disable*/ // 以下禁用检查 |
忽略文件
可以在配置文件同级别下创建.eslintignore
文件来进行忽略代码检查文件的配置,例:
1 | node_modules/* |
常见问题
ESLint找不到配置的插件
原因:如果使用全局的ESLint来检查代码,那么配置的插件也必须再全局下载。如果在项目内使用ESLint,那么ESLint和对应的插件都必须存在于package.json
文件的devDependencies
里作为依赖,并且需要正确被下载。