Skip to content
On this page

配置你的 ESlint

ESlint 被设计为完全可配置的,这意味着你可以关闭每一个规则而只运行基本语法验证,或混合和匹配 ESLint 默认绑定的规则和你的自定义规则,以让 ESLint 更适合你的项目。

有两种主要的方式来配置 ESLint:

  • 使用 JavaScript 注释将配置信息嵌入到源代码文件中
  • 使用 JavaScript、JSON 或者 YAML 文件为整个目录(处理你的主目录)和它的子目录指定配置信息。可以配置一个独立的 .eslintrc.* 文件,或者直接在 package.json 文件里的 eslintConfig 字段指定配置,ESLint 会查找和自动读取它们,再者,你可以在 命令行 运行时指定一个任意的配置文件。如果你在你的主目录(通常 ~/)有一个配置文件,ESLint 只有在无法找到其他配置文件时才使用它。

常见的配置有哪些

  • env 表示脚本的运行环境
  • 环境提供预定义的全局变量。可用的环境有很多,也可以选择多个
{
    "env": {
        "browser": true,
        "node": true
    }
}
  • 如果您想使用来自插件的环境,请确保在 plugins 数组中指定插件名称,然后使用不带前缀的插件名称,后跟斜杠,然后是环境名称。例如:
{
    "plugins": ["example"],
    "env": {
        "example/custom": true
    }
}
  • 指定全局变量

    ESLint 的一些核心规则依赖于在运行时对代码可用的全局变量的支持。因为这些变量在不同的环境之间会有很大的差异,并且在运行时被修改,ESLint 没有假设在你的执行环境中存在什么全局变量。如果您想使用需要了解哪些全局变量可用的规则,您可以在配置文件中定义全局变量,或者在源代码中使用配置注释。

    {
        "globals": {
            "var1": "writable",
            "var2": "readonly"
        }
    }
    
  • 指定解析器选项

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 } }. { "env": { "es6": true } }自动启用 ES6 语法,但{ "parserOptions": { "ecmaVersion": 6 } }不会自动启用 ES6 全局变量。

.eslintrc.*使用该parserOptions属性在您的文件中设置解析器选项。可用的选项有:

  • ecmaVersion- 设置为 3、5(默认)、6、7、8、9、10、11、12 或 13 以指定要使用的 ECMAScript 语法版本。还可以设置为 2015(同 6)、2016(同 7)、2017(同 8)、2018(同 9)、2019(同 10)、2020(同 11)、2021(同为 12)或 2022(与 13 相同)以使用基于年份的命名。您还可以设置“”以使用最新支持的版本。
  • sourceType- 设置为"script"(默认)或者"module"如果您的代码在 ECMAScript 模块中。
  • allowReserved- 允许使用保留字作为标识符(如果ecmaVersion是 3)。
  • ecmaFeatures 一个对象,指示您想使用哪些附加语言功能:
    • globalReturn- 允许return全局范围内的语句
    • impliedStrict- 启用全局 严格模式(如果ecmaVersion是 5 或更大)
    • jsx- 启用 JSX

下面有个小例子:

{
    "parserOptions": {
        "ecmaVersion": "latest",
        "sourceType": "module",
        "ecmaFeatures": {
            "jsx": true
        }
    },
    "rules": {
        "semi": "error"
    }
}

Released under the MIT License.