ESLint配置参数
前言
要将代码规范落实不仅是靠个人自觉的遵守,还得需要一个工具可以进行强制性地检测校验,这样就能真正地将规范落实到实处。而ESLint
就是用来检测JS(X)/TS(X)
代码的不二选择。
常用参数
extends
用来继承已有的ESLint
配置,这个配置可以是内置的,也可以是npm
插件;其值的格式有字符串和字符串数组两种;
字符串
当只是一个字符串时,这个字符串可以是:
- 配置文件路径;
- 共享配置名称(即
npm
插件);当npm
插件名称为eslint-config-*
格式时,可以省略前面的eslint-config-
前缀,如:eslint-config-airbnb
可以直接写成airbnb
; ESLint
内置集成的配置;如:eslint:recommended
,eslint:all
;
字符串数组
数组形式,每个字符串都可以是上述格式;但是数组中后面的配置会覆盖前面的配置(当出现相同规则时);如:
1 | { |
env
env
参数可以设置代码环境,启用一个环境,eslint
就能够自动识别对应环境所有的全局变量;常用的环境有:
browser
:浏览器环境;node
:Node.js
环境;shared-node-browser
:浏览器和Node.js
通用的全局变量;es6
:启用除了modules
以外的所有ECMAScript 6
特性;jquery
:jQuery
相关全局变量;worker
:Web Worker
环境;
除了上述的环境,eslint
还支持很多比较常用的库作为环境(支持其全局变量),详情可以参考官方文档;
env
的设置方式很简单,其值为一个对象,当需要开启某个环境时,只需要将对应环境的值设置为true
即可:
1 | { |
parserOptions
parserOptions
是用来设置要支持检测的ES
语法版本的;其设置值也是一个对象,包含三个选项(键):
ecmaVersion
:用来设置支持的ECMAScript
语言版本;可以是3
,5
,6
这种经典版本号,也可以是用年份来设置版本号,如:2015
(同6
),2020
(同11
);ES6
及其之后的版本就可以使用对应的年份来设置版本号。默认值是5
。sourceType
:具体作用细节还不清楚,网上找不到详细的资料;目前有两个选项,一个是script
(脚本模式,默认值),另一个是module
(ES
模块);ecmaFeatures
:用于设置一些额外的语言特性,比如JSX
等等;
ecmaFeatures
目前支持的额外语言特性有4
个:
jsx
:JSX
语法;impliedStrict
:全局strict
模式;globalReturn
:全局作用域使用return
语句;experimentalObjectRestSpread
:实验性功能,对象属性展开及剩余操作(目前该特性已经为stage-4
了,ES2018
);
该属性设置方式同env
一样,设置为true
则开启,反之false
则关闭;
1 | { |
parser
设置ESLint
的解析器,解析器用来解析代码的语法树;其默认解析器为Espree
,但是还有其他可以兼容的解析器(需要单独安装相应的npm
包):
esprima
babel-eslint
:对babel
的封装;@typescript-eslint/parser
:支持对TS
文件的解析;
好像也可以直接在parserOptions
里面设置parser
:
1 | { |
root
由于ESLint
配置默认遵循层叠原则,即每级目录可以单独配置.eslintrc.*
相关文件,如果该级目录没有文件则会向上一级查找直至根目录;不过如果设置root
为true
之后,项目中所有的检测文件不再会遵循层叠原则,而是统一以根目录中的配置文件为准来检测代码。
1 | { |
rules
除了继承已有的配置,还能手动修改通过rules
属性来手动修改ESLint
相关配置;每个检测规则都有其独特的键名,当要修改某条规则时,则使用键名然后设置相应的值即可;ESLint
自带的规则表可以查看官方文档,使用其它ESLint
插件则需要查看对应插件给出的规则;
每个规则都遵循一些简单的设置:
有些规则可能支持更详细的配置,比如数组,对象等等;
1 | { |
overrides
overrides
可以匹配特定的文件,然后专门为其设置相应的ESLint
配置(相当于一个优先级更高的配置文件);
files
通过这个参数可以来匹配特定的文件,其语法遵循glob
匹配模式;值的形式为数组,数组中每个字符串代表一个匹配模式,如:
1 | { |