1

ESLint的配置

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

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

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

有几个可以配置的信息:

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

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

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

所有这些选项都可以让您细粒度的控制ESLint如何处理我们的代码。

Specifying Parser Options

ESLint允许您指定要支持的JavaScript语言选项。 默认情况下,ESLint支持ECMAScript 5语法。 您可以通过使用解析器选项来覆盖该设置以支持其他ECMAScript版本以及JSX。

请注意,支持JSX语法与支持React不同。 React将特定语义应用于ESLint无法识别的JSX语法。 如果您使用React并且需要React语义,我们建议使用eslint-plugin-react。同样,支持ES6语法与支持新的ES6全局变量(例如,新的类型,如Set)不同。 对于ES6语法,使用{“parserOptions”:{“ecmaVersion”:6}}; 对于新的ES6全局变量,使用{“env”:{“es6”:true}}(此设置自动启用ES6语法)。 解析器选项通过使用parserOptions属性在.eslintrc.*文件中设置。 可用的选项有:

  • 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...


陈平安
302 声望8 粉丝

好的问题比精彩的答案更重要!


引用和评论

1 篇内容引用
0 条评论