ESLint彻底配置,这意味着您能够关闭每一个规则,只运行基本的语法验证,或者混合并匹配捆绑的规则和自定义规则,使ESLint来完善你的的项目。 配置ESLint有两种主要方法:node
Configuration Comments
(注释配置)- 使用JavaScript注释将配置信息直接嵌入文件。react
Configuration Files
(文件配置)- 使用JavaScript
,JSON
或YAML
文件来指定整个目录及其全部子目录的配置信息。 这能够是package.json
文件中的.eslintrc.*
文件或eslintConfig
字段的形式,这两个ESLint都将自动查找和读取,也能够在命令行中指定配置文件。es6
有几个能够配置的信息:typescript
Environments
(环境)- 您的脚本运行的环境。每一个环境都带有一组预约义的全局变量。npm
Globals
(全局)- 您的脚本在执行期间访问的其余全局变量。json
Rules
(规则)- 启用了哪些规则以及什么错误级别。数组
全部这些选项均可以让您细粒度的控制ESLint如何处理咱们的代码。浏览器
ESLint容许您指定要支持的JavaScript语言选项。 默认状况下,ESLint支持ECMAScript 5语法。 您能够经过使用解析器选项来覆盖该设置以支持其余ECMAScript版本以及JSX。curl
请注意,支持JSX语法与支持React不一样。 React将特定语义应用于ESLint没法识别的JSX语法。 若是您使用React而且须要React语义,咱们建议使用eslint-plugin-react
。一样,支持ES6语法与支持新的ES6全局变量(例如,新的类型,如Set)不一样。 对于ES6语法,使用{“parserOptions”:{“ecmaVersion”:6}}
; 对于新的ES6全局变量,使用{“env”:{“es6”:true}}
(此设置自动启用ES6语法)。 解析器选项经过使用parserOptions
属性在.eslintrc.*
文件中设置。 可用的选项有:ide
ecmaVersion
- 设置为3,5(默认),6,7或8以指定要使用的ECMAScript语法的版本。 您也能够设置为2015(与6)相同,2016(与7相同)或2017(与8相同))使用年度命名。
sourceType
- 若是您的代码在ECMAScript模块中,请设置为“脚本”(默认)或“模块”。
ecmaFeatures
- 一个对象,指出您要使用哪些其余语言功能:
globalReturn
- 容许在全局范围内使用return
impliedStrict
- 启用全局的严格模式
jsx
- 启用JSX
experimentalObjectRestSpread
- 启用对草案或实验中对象的支持
一个.eslintrc.json
例子:
{ "parserOptions": { "ecmaVersion": 6, "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "rules": { "semi": 2 } }
设置解析器选项有助于ESLint肯定解析错误是什么。 默认状况下,全部语言选项都为false
。
默认状况下,ESLint使用Espree
做为其解析器。 只要解析器知足如下要求,您能够选择指定在配置文件中使用不一样的解析器:
它必须是本地安装的npm模块。
它必须有一个Esprima兼容的接口(它必须导出一个parse()方法)。
它必须生成与Esprima兼容的AST和令牌对象。
请注意,即便有这些兼容性,也不能保证外部解析器可以与ESLint正常工做,ESLint不会修复与其余解析器不兼容的错误。
要指示要用做解析器的npm模块,请使用.eslintrc
文件中的解析器选项指定它。 例如,如下规定使用Esprima而不是Espree:
{ "parser": "esprima", "rules": { "semi": "error" } }
如下解析器与ESLint兼容:
Esprima
Babel-ESLint - 围绕Babel解析器的包装器,使其与ESLint兼容。
typescript-eslint-parser(实验) - 将TypeScript转换为ESTree兼容表单的解析器,以即可以在ESLint中使用。 目标是容许由ESLint解析TypeScript文件(尽管不必定经过全部ESLint规则)。
请注意,使用自定义解析器时,ESLint默认状况下仍然须要parserOptions
配置属性才能正常使用ECMAScript 5中的功能。 解析器都被传递给parserOptions
,而且可能使用或不使用它们来肯定要启用哪些功能。
可用的环境有:
浏览器 - 浏览器全局变量。
node - Node.js全局变量和Node.js做用域。
commonjs - CommonJS全局变量和CommonJS做用域(将其用于使用Browserify / WebPack的仅浏览器代码)。
shared-node-browser - Node和Browser共同的全局做用域。
es6 - 启用除模块以外的全部ECMAScript 6功能(这将自动将ecmaVersion解析器选项设置为6)。
...
这些环境不是相互排斥的,所以您能够一次定义多个。
环境能够在文件内部,配置文件中指定,也能够使用--env
命令行。
要使用JavaScript文件中的注释指定环境,请使用如下格式:
/* eslint-env node, mocha */
这使Node.js和Mocha环境成为可能。
要指定配置文件中的环境,请使用env
,并经过将每一个环境设置为true
来指定要启用的环境。 例如,如下功能能够启用浏览器和Node.js环境:
{ "env": { "browser": true, "node": true } }
package.json
文件中
{ "name": "mypackage", "version": "0.0.1", "eslintConfig": { "env": { "browser": true, "node": true } } }
YAML中配置
--- env: browser: true node: true
若是要在环境中使用插件,请务必在plugins
数组中指定插件名称,而后使用未修饰的插件名称,后跟斜杠,后跟环境名称,例如:
{ "plugins": ["example"], "env": { "example/custom": true } }
package.json
文件中
{ "name": "mypackage", "version": "0.0.1", "eslintConfig": { "plugins": ["example"], "env": { "example/custom": true } } }
YAML文件中
--- plugins: - example env: example/custom: true
no-undef规则将对被访问但未在同一文件中定义的变量发出警告。若是您在文件中使用全局变量,那么定义这些全局变量是有必要的,以便ESLint不会对其使用状况发出警告。 您能够使用文件中的注释或配置文件来定义全局变量。
要使用JavaScript文件中的注释来指定全局变量,请使用如下格式:
/* global var1, var2 */
这定义了两个全局变量var1和var2。 若是要选择指定这些全局变量永远不会被写入(只读),则能够使用false标志来设置每一个变量:
/* global var1:false, var2:false */
要在配置文件中配置全局变量,请使用全局关键字并指出要使用的全局变量。将每一个全局变量名设置为true,以容许变量被覆盖或false以禁止覆盖。 例如:
{ "globals": { "var1": true, "var2": false } }
YAML中
--- globals: var1: true var2: false
这些示例容许在代码中覆盖var1,但不容许覆盖var2。
ESLint支持使用第三方插件。 在使用插件以前,您必须使用npm进行安装。
要在配置文件中配置插件,请使用plugins
,其中包含插件名称列表。 能够从插件名称中省略eslint-plugin-前缀。
{ "plugins": [ "plugin1", "eslint-plugin-plugin2" ] }
YAML中
--- plugins: - plugin1 - eslint-plugin-plugin2
ESLint附带了大量的规则。 您能够使用配置注释或配置文件修改项目使用的规则。 要更改规则设置,必须将规则ID设置为如下值之一:
"off"
或0
- 关闭规则
"warn"
或1
- 将规则做为警告(不影响退出代码)
"error"
或2
- 将规则打开为错误(触发时退出代码为1)
要使用配置注释配置文件内的规则,请使用如下格式的注释
/* eslint eqeqeq: "off", curly: "error" */
在这个例子中,eqeqeq
被关闭,curly
被打开做为一个错误。 你也能够这么写:
/* eslint eqeqeq: 0, curly: 2 */
若是规则有其余选项,则也能够使用数组来指定,例如:
/* eslint quotes: ["error", "double"], curly: 2 */
此注释指定引号规则的“double”选项。 数组中的第一个值始终是off
/warn
/error
。
配置文件中:
{ "rules": { "eqeqeq": "off", "curly": "error", "quotes": ["error", "double"] } }
YAML中
--- rules: eqeqeq: off curly: error quotes: - error - double
若要配置plugin
的规则,方式以下
{ "plugins": [ "plugin1" ], "rules": { "eqeqeq": "off", "curly": "error", "quotes": ["error", "double"], "plugin1/rule1": "error" } }
YAML中
--- plugins: - plugin1 rules: eqeqeq: 0 curly: error quotes: - error - "double" plugin1/rule1: error
固然插件的规则也能够使用注释来定义
/* eslint "plugin1/rule1": "error" */