ESlint 默认解析 ES5 语法,经过配置 parser options,能够覆盖这个设置从而解析其余 ES 版本 或者是 JSX 语法(注:支持 JSX 语法和支持 React 语法是两个概念,使用 React 开发时推荐使用 eslint-plugin-react)。一样,支持 ES6 语法和支持 ES6 中新增的数据类型好比 Set 等也略有不一样,仅支持ES6语法可直接配置 {"parserOptions": {"ecmaVersion": 6}} ,若需支持新增的数据类型则配置为 {"env": {"es6": true}}(自动支持ES6语法)。node
parserOptions 可选的配置项有:react
ecmaVersion : 可配置为 3,5(默认),6(2015),7(2017),8(2018),9(2019),10(2019)es6
sourceType : 可配置为 script 或 moduleweb
ecmaFeatures : 用来配置一些语言其余特性的对象typescript
ESlint 默认使用Espree做为解析器,也能够指定知足如下条件的其余解析器:express
经常使用的可选项有:Esprima,Babel-ESlint,@typescript-eslint/parsernpm
env 决定了当前环境下可以使用的全局变量,它的可选项有:json
这些环境并非互斥的,你能够一次定义多个,好比:数组
{
"env": {
"browser": true,
"node": true
}
}
复制代码
若是要使用一个插件中的环境,那要保证先将插件名定义的 plugins 数组中,好比:浏览器
{
"plugins": ["example"]
"env": {
"browser": true,
"node": true,
"example/custom": true
}
}
复制代码
若是在一个JS文件中使用到了这个文件内没有定义的全局变量,ESlint 会进行报错。要去掉这个报错,能够选择在文件内部的注释配置全局变量或是经过配置文件修改。
/* global var1, var2 */
// 若要在当前文件修改var1值
/* global var1:writable, var2 */
复制代码
{
"globals": {
"var1": "writable",
"var2": "readonly"
}
}
// 也能够经过配置off去掉所有变量中某个变量的使用,好比在 es6 环境下去掉 Promise 的使用
{
"globals": {
"Promise": "off"
}
}
复制代码
ESlint 提供了大量的规则,咱们一样能够经过使用注释配置或配置文件来修改它们。要修改一个规则,就必须将将它的ID改成如下可选值:
经过配置文件修改:
// 此处注意 quotes 规则加入了附加选项,故用数组表示
/* eslint quotes: ["error", "double"], curly: 2 */
// 使用 eslint 插件中定义的规则
/* eslint "plugin1/rule1": "error" */
复制代码
经过配置文件修改;
{
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"]
}
}
// 使用插件中的规则
{
"plugins": [
"plugin1"
],
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"],
"plugin1/rule1": "error"
}
}
复制代码
若是要在代码中暂时屏蔽掉某个规则,能够在代码中添加以下注释:
// 屏蔽全部规则
/* eslint-disable */
alert('foo');
/* eslint-disable */
// 屏蔽特定规则
/* eslint-disable no-alert, no-console */
alert('foo');
console.log('bar');
/* eslint-disable no-alert, no-console */
// 只针对某一行作屏蔽(块级注释和行内注释都可)
alert('foo'); // eslint-disable-line
/* eslint-disable-next-line */
alert('foo');
foo() // eslint-disable-line example/rule-name
复制代码
经过配置 overrides 属性能够对一组文件屏蔽某些规则:
{
"rules": {...},
"overrides": [
{
"files": ["*-test.js","*.spec.js"],
"rules": {
"no-unused-expressions": "off"
}
}
]
}
复制代码
本系列文章主要是将ESlint的配置文档翻译组织了一遍,以供本身查阅,源文档 Configuring ESlint。