ESLint 代码规范:静态检查与团队规范
ESLint 代码规范:静态检查与团队规范
ESLint 是目前最流行的 JavaScript 代码静态分析工具。它能在代码运行前发现潜在错误、统一代码风格,并强制执行团队约定的编码规范。本教程将带你从零开始理解 ESLint,并学会如何在实际团队中落地规范。
什么是 ESLint 及其核心价值
ESLint 是一个开源的 JavaScript 代码检查工具。它通过解析代码生成 AST(抽象语法树),然后根据可配置的规则对 AST 进行模式匹配,从而发现代码中的问题。
核心价值:
- 静态分析:不需要运行代码就能发现语法错误、逻辑隐患(如未使用变量、不可达代码)。
- 风格统一:强制缩进、引号、分号等代码风格,让团队代码看起来像同一个人写的。
- 自动修复:许多规则支持
--fix参数,可自动修正代码风格问题。 - 完全可插拔:每条规则都是一个独立模块,可自由开启或关闭。
环境准备与安装
在开始之前,确保你的开发环境中已安装 Node.js (v12.22.0 以上) 和 npm。
在你的项目根目录下执行:
npm init -y # 如果没有 package.json,请先初始化
npm install eslint --save-dev
安装完成后,可通过以下命令生成配置文件:
npx eslint --init
交互式命令行会询问框架、模块系统、代码运行环境等,快速生成适合你项目的 .eslintrc 文件(或 eslint.config.js)。
配置文件详解
ESLint 支持多种配置格式,目前主流是 扁平化配置 (eslint.config.js)。下面是一个典型的配置示例:
// eslint.config.js
import js from '@eslint/js';
export default [
js.configs.recommended, // 使用内置推荐规则
{
files: ["**/*.js"],
rules: {
"no-unused-vars": "warn",
"no-console": "off",
"semi": ["error", "always"],
"quotes": ["error", "double"]
}
}
];
对于仍使用传统 .eslintrc 的项目(JSON/YAML 格式),基本结构如下:
{
"env": {
"browser": true,
"es2021": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"rules": {
"indent": ["error", 2],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "single"],
"semi": ["error", "never"]
}
}
关键字段说明:
extends:继承现有的规则集,如eslint:recommended或插件的预设。plugins:引入第三方插件(如@typescript-eslint、prettier)。rules:自定义每条规则的报警级别("off"/"warn"/"error")和选项。
规则(Rules)彻底掌握
ESLint 拥有超过 300 条内置规则,覆盖可能的错误、最佳实践、变量声明、风格偏好等。
规则级别:
"off"或0:关闭规则"warn"或1:警告(不影响 exit code)"error"或2:错误(会导致退出码为 1,可在 CI 中阻断构建)
常用规则举例:
rules: {
"no-var": "error", // 禁止使用 var
"prefer-const": "error", // 建议使用 const 代替 let
"no-unused-vars": ["warn", { args: "none" }], // 未使用变量警告,但忽略未使用的函数参数
"eqeqeq": ["error", "always"], // 强制使用 === 和 !==
"curly": "error", // if/else/for/while 必须有花括号
"arrow-spacing": "error", // 箭头前后空格
}
你可以通过 ESLint 规则列表 查阅所有规则,每条规则都有详细的示例和说明。
实战:集成编辑器获得实时反馈
将 ESLint 无缝融入你的编辑器,可以在编写代码时即时看到问题,无需等到执行命令。
VS Code 配置步骤
- 安装官方扩展 ESLint(作者:Microsoft)。
- 确保项目根目录存在 ESLint 配置文件。
- 打开 VS Code 设置(
Ctrl + ,),搜索eslint,启用:- Eslint: Enable — 确保已勾选。
- 可开启
editor.codeActionsOnSave中的source.fixAll.eslint来实现保存自动修复:
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
}
重启编辑器后,问题代码会被红色波浪线标注,按下 Ctrl + . 可快速查看修复建议。
WebStorm / IntelliJ IDEA
进入 Settings -> Languages & Frameworks -> JavaScript -> Code Quality Tools -> ESLint,选择 Automatic ESLint configuration。勾选 Run eslint --fix on save。
搭建团队规范体系
ESLint 的真正力量来自团队共识。仅靠个人配置无法保证代码一致性,必须将规范文件纳入版本控制并强制执行。
1. 创建共享的 ESLint 配置包
对于多项目团队,可发布一个 npm 包(如 eslint-config-myteam),内含完整规则集。各项目只需 extends 该包即可。
示例结构:
eslint-config-myteam/
index.js // 导出规则对象
package.json
2. 搭配 Prettier 解决风格冲突
ESLint 负责代码质量,Prettier 负责格式。使用 eslint-config-prettier 关闭所有与 Prettier 冲突的 ESLint 规则,并用 eslint-plugin-prettier 将 Prettier 作为 ESLint 规则运行。
npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier
配置示例:
export default [
// ...
{
plugins: { prettier },
rules: {
...prettierConfig.rules, // 包含 eslint-config-prettier 规则
"prettier/prettier": "error" // 将 Prettier 格式化问题作为 ESLint 错误
}
}
];
3. 通过 Git Hooks 强制检查
使用 Husky + lint-staged 在提交前运行 ESLint,避免不规范代码进入仓库。
npm install --save-dev husky lint-staged
npx husky init
在 .husky/pre-commit 中添加:
npx lint-staged
package.json 中配置:
"lint-staged": {
"*.{js,jsx,ts,tsx}": ["eslint --fix", "git add"]
}
现在每次 git commit 时,暂存区文件都会自动修复风格问题,并阻止包含未修复错误的提交。
4. CI/CD 集成
在持续集成流水线(如 GitHub Actions、Jenkins)中增加一步 ESLint 检查,作为合并请求的门禁:
- name: Run ESLint
run: npx eslint .
当有 error 级别的问题时,构建失败,阻止合并。
忽略不需要检查的文件
创建 .eslintignore 文件(或使用配置中的 ignores 字段),列出不需要检查的目录和文件:
node_modules/
dist/
build/
*.min.js
使用扁平配置时:
export default [
// ...
{
ignores: ["node_modules/", "dist/"]
}
];
常见问题与调试
- 配置未生效:确保配置文件位于项目根目录,且编辑器的 ESLint 工作目录正确。在 VS Code 中可通过命令面板运行
ESLint: Show Output Channel查看调试信息。 - TypeScript 支持:安装
@typescript-eslint/parser和@typescript-eslint/eslint-plugin,配置parser和plugins即可。 - 规则冲突:如果使用了多个extends,后声明的规则会覆盖前面的。可使用
eslint --print-config file.js查看最终生效的配置。 - 大量历史遗留问题:可单独运行
eslint --fix进行全量修复,或通过 lint-staged 仅修复新改动的文件。
总结
ESLint 是现代 JavaScript 工程不可或缺的质量基石。从个人开发者到大型团队,它都能通过静态分析消除低级错误、固化代码风格,从而显著提升代码可读性和可维护性。关键操作路径如图所示:
- 安装与初始化配置
- 选择规则集并自定义
- 编辑器集成实时反馈
- 搭配 Prettier 与 Git Hooks 强制落地
- CI/CD 中增加检查门禁
遵循这套流程,你的团队代码将会变得整洁、一致且健壮。现在就在你的项目中启用 ESLint,迈出规范化编码的第一步吧。