ESLint 是什么以及如何使用 ESLint 检测并修复 JavaScript 项目的代码

更新于 2026-01-25

Hoai

问题背景

开发一个项目是一个长期的过程,并非一次性编写完代码就结束了,而是需要持续地使用和维护这些代码。在一个项目中,开发时间可能远小于测试和维护的时间。

由于项目周期如此之长,人员很可能会不断更替。这意味着可能会有许多人参与编写代码,而每个人都有自己独特的编码风格。我们不应完全禁止这种多样性,但对于换行、括号、分号等语法规范,我们可以制定一套通用的规则,并要求所有开发者都遵守。

什么是 ESLint

ESLint 是一个静态代码分析工具,能够快速发现你代码中的问题。它已集成到大多数文本编辑器中,你也可以将 ESLint 作为持续集成/持续部署(CI/CD)流程的一部分来运行。

为此,ESLint 提供了一套可配置的规则,用于检测并防止代码违规行为。此外,ESLint 还可以根据集成的配置自动修复或格式化代码。

ESLint 为不同的代码编辑器提供了扩展插件,只需安装 ESLint 扩展,即可实时收到错误通知。要查看支持的代码编辑器列表,请访问 ESLint Integrations 页面。

安装

你可以通过 npm 全局安装 ESLint:

$ npm i -g eslint

然后运行 init 命令,为你的项目初始化 ESLint 配置。注意:你需要在包含目标项目的目录中运行 init 命令。

$ eslint --init

运行 --init 时,ESLint 会向你提出一系列问题,以创建适合你项目的配置文件。你只需根据项目实际使用的技术栈进行回答即可。随后,ESLint 将生成一个 .eslintrc.js 文件,其中包含该项目所使用的 ESLint 配置。(注意:如果你选择 JSON 或 YAML 格式的配置,ESLint 将生成相应的配置文件。)

运行 --init 后生成的默认配置如下所示:

module.exports = {
    "env": {
        "browser": true,  
        "es2021": true
    },  
    "extends": "eslint:recommended",  
    "overrides": [
    ],  
    "parserOptions": {
        "ecmaVersion": "latest",  
        "sourceType": "module"
    },  
    "rules": {
    }
}

基本用法

运行 Lint 的基本语法如下:

$ eslint [options] [file|dir|glob]*

例如,对 index.js 文件运行 Lint:

$ eslint index.js

ESLint 会自动在项目中查找 .eslintrc 配置文件,并根据该配置执行 Lint 检查。你也可以通过命令行指定 ESLint 使用的配置文件。

假设你的所有代码都在 /src 目录下,并希望对整个项目运行 Lint:

$ eslint src

但如果你只想对 .js 文件运行 Lint,并忽略 src/dist 目录中的文件:

$ eslint src --ignore-pattern 'src/dist' --ext .js

还有许多其他有用的 CLI 命令,你可以参考 ESLint 官方文档

ESLint 还可以自动修复代码违规问题,只需添加 --fix 参数:

# 修复违规项但不保存更改
$ eslint src --fix-dry-run

# 修复违规项并保存更改
$ eslint src --fix

ESLint 规则

如前所述,ESLint 提供了一套规则,你可以为项目进行配置。完整的规则列表请参见 ESLint Rules

在配置文件中设置规则非常简单,只需在 "rules" 部分添加一个属性,并赋予以下值之一:

  • "off"0 —— 关闭该规则
  • "warn"1 —— 以警告模式启用该规则
  • "error"2 —— 以错误模式启用该规则

例如,如果我希望在每次运行 Lint 时,对 no-extra-semi 规则启用错误模式,可以这样配置:

...
    "rules": {
        "no-extra-semi": "error"
    }
...

推荐的规则集

ESLint 提供了大量规则,而选择哪些规则应用到项目中可能既耗时又费力。因此,社区已经创建了许多现成的规则集。

其中最著名的包括 Airbnb 和 Google 的规则集:

使用它们非常简单:只需在开发依赖中安装对应的包(使用 --save-dev),然后在 ESLint 配置文件中声明你想使用的配置名称即可。

...
    "extends": "google",
    // 或
    "extends": "airbnb",
...

Airbnb 和 Google 都在其官方文档(Airbnb Style GuideGoogle Style Guide)中清晰地描述了如何使用其规则集以及具体应用了哪些规则。

此外,你也可以直接使用 ESLint 官方推荐的规则集,只需设置:

"extends": "eslint:recommended"

与 Git Hook 集成

为了在整个项目中建立一致的代码风格,你需要防止因疏忽、故意或忘记运行 Lint 而导致的“推送”不良代码的行为。通过与 Git Hook 集成,你可以有效阻止此类提交。

总结

ESLint 是一个高效分析和修改 JavaScript 代码的工具,有助于在项目中保持一致的代码风格。将 ESLint 应用于项目非常简单,同时它还为众多代码编辑器和 IDE 提供了集成扩展,使你的开发工作更加便捷。