[翻译] ESLint的配置(一)

ESLint的配置

ESLint彻底配置,这意味着您能够关闭每一个规则,只运行基本的语法验证,或者混合并匹配捆绑的规则和自定义规则,使ESLint来完善你的的项目。 配置ESLint有两种主要方法:node

  • Configuration Comments(注释配置)- 使用JavaScript注释将配置信息直接嵌入文件。react

  • Configuration Files (文件配置)- 使用JavaScriptJSONYAML文件来指定整个目录及其全部子目录的配置信息。 这能够是package.json文件中的.eslintrc.*文件或eslintConfig字段的形式,这两个ESLint都将自动查找和读取,也能够在命令行中指定配置文件。es6

有几个能够配置的信息:typescript

  • Environments(环境)- 您的脚本运行的环境。每一个环境都带有一组预约义的全局变量。npm

  • Globals(全局)- 您的脚本在执行期间访问的其余全局变量。json

  • Rules(规则)- 启用了哪些规则以及什么错误级别。数组

全部这些选项均可以让您细粒度的控制ESLint如何处理咱们的代码。浏览器

Specifying Parser Options

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

Specifying Parser

默认状况下,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,而且可能使用或不使用它们来肯定要启用哪些功能。

Specifying Environments

可用的环境有:

  • 浏览器 - 浏览器全局变量。

  • 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

Specifying Globals

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。

Configuring Plugins

ESLint支持使用第三方插件。 在使用插件以前,您必须使用npm进行安装。

要在配置文件中配置插件,请使用plugins,其中包含插件名称列表。 能够从插件名称中省略eslint-plugin-前缀。

{
    "plugins": [
        "plugin1",
        "eslint-plugin-plugin2"
    ]
}

YAML中

---
  plugins:
    - plugin1
    - eslint-plugin-plugin2

Configuring Rules

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" */

http://eslint.org/docs/user-g...

相关文章
相关标签/搜索