配置文件
eslint --init 会生成一个已经配置好的配置文件。
可以使用一个名为 .eslintrc.json 作为的一个单独的配置文件。也可以在 package.json 中指定 eslintConfig 字段
{
"extends": "eslint:recommended", //继承 eslint 推荐的规则
"extends": [
"eslint:recommended",
"plugin: xxxplugin/规则" // 也可使用 某个插件的规则集
],
"parser": "esprima",// 解析器,还可是 Babel-ESLint | @typescript-eslint/parser 等。如果使用 自定义的解析器,必须指定 parserOptions。如果使用实验性质的语法,需要使用 babel-eslint。不同的 parser 都是为了将代码转换为 eslint 能看懂的代码
//Parser Options 指定语法环境,不包括 API。例如 es7 的新的 API 是不包含的。如果换了一个 parser,paraerOptions 仍然是需要的
"parserOptions": {
"ecmaVersion": 6 | 7 | 8 ...,
"sourceType": "script"(默认) | "module",
"ecmaFeatures": {
"globalReturn": true | false // 是否允许在全局作用域下使用 return 语句
"jsx": true // 如要使用 react 仍然要用 eslint-plugin-react
}
},
"plugins": ["a-plugin", "b-plugin"], // 指定插件, eslint-plugin- 开头的插件可以沈略 eslint-plugin-
"processor": "a-plugin/a-processor", // 处理器,一般插件会提供相应的处理器。处理器可以从另一种文件中提取JavaScript代码,然后让ESLint对JavaScript代码进行编码。或者处理器可以出于某种目的在预处理中转换JavaScript代码。
"overrides": [
{
"files": ["*.md"], // 也可对特定类型的文件使用相应的规则
"processor": "a-plugin/xxx处理器",
"rules": {
}
}
],
"env": { // 用来指定相应的环境,并启用相应的全局 API ,可以指定多个
"es6": true | false,
"browser": true | false,
"node": true | false,
"plugin-A/es2020": true, // 为某个插件指定 env
},
"globals": { // 当访问当前源文件内未定义的变量时,no-undef 规则将发出警告。如果你想在一个源文件里使用全局变量,推荐你在 ESLint 中定义这些全局变量,这样 ESLint 就不会发出警告了。
"var1": "writable",
"var2": "readonly",
"var3": "off"
},
"rules": {
"规则1": "off", // 关闭规则
"规则2": "error", // 开启规则,出现错误时,会导致程序退出
"规则4": "warn", // 开启规则,出现错误时,不会导致程序退出
"规则3": ["error", "double"],
"plugin1/rule1": "error" // 复写某个插件的某个 rule
}
}
使用注释控制规则
对于某个代码块进行禁用、使用特定规则对代码块进行禁用
/* 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 */
alert('foo');
/* eslint-disable no-alert */
alert('foo');
禁用当前行和下一行、和使用特定规则禁用当前行和下一行、禁用插件的某个规则
alert('foo'); // eslint-disable-line
// eslint-disable-next-line
alert('foo');
/* eslint-disable-next-line */
alert('foo');
alert('foo'); /* eslint-disable-line */
alert('foo'); // eslint-disable-line no-alert, quotes, semi
// eslint-disable-next-line no-alert, quotes, semi
alert('foo');
alert('foo'); /* eslint-disable-line no-alert, quotes, semi */
/* eslint-disable-next-line no-alert, quotes, semi */
alert('foo');
foo(); // eslint-disable-line example/rule-name
foo(); /* eslint-disable-line example/rule-name */
配置文件级联
在一个项目中可以写很多个 eslint 配置文件
- 在校验某部分代码时,会首先去查看当前目录下有没有配置文件
- 如果当前目录的配置文件中有
root:true
属性,那么采用当前目录的配置文件 - 如果当前目录的配置文件中没有
root:true
属性,那么继续往上找 parent,直到找到有root:true
属性的,在向上查找的这个路径上发现的 esllint 配置文件最后会被合并到一起,层级越往里的优先级越高
- 如果当前目录的配置文件中有