ESLint 除了在packages.json还能在哪里配置?
ESLint 的配置文件可以存在于多个位置,并且支持多种文件格式。以下是常见的 ESLint 配置存放位置和文件类型:
1. 专用配置文件(优先级更高)
ESLint 会自动检测项目中的配置文件,按以下优先级从高到低加载(高优先级覆盖低优先级):
配置文件名称 | 文件格式 | 说明 |
---|---|---|
.eslintrc.js | JavaScript | 动态配置,支持条件逻辑(最灵活,推荐)。 |
.eslintrc.cjs | CommonJS | 适用于 CommonJS 环境(Node.js 项目)。 |
.eslintrc.yaml / .eslintrc.yml | YAML | 结构化配置,适合简洁配置。 |
.eslintrc.json | JSON | 静态配置,兼容性好(但无法写注释)。 |
.eslintrc (不推荐) | 不确定 | 旧版格式,易混淆,不建议使用。 |
示例:.eslintrc.js
module.exports = {root: true,env: { node: true },extends: ["plugin:vue/recommended", "eslint:recommended"],rules: {"no-console": "warn"}
};
2. package.json
中的 eslintConfig
字段
- 如果项目中没有专用的 ESLint 配置文件,ESLint 会检查
package.json
中的eslintConfig
字段。 - 适合小型项目或希望减少配置文件数量的场景。
示例:package.json
{"name": "my-project","eslintConfig": {"extends": ["plugin:vue/recommended"]}
}
3. 全局配置文件(用户级)
- 路径:
~/.eslintrc.*
(用户主目录下)。 - 用途:配置用户所有项目的默认 ESLint 规则(慎用,易造成全局污染)。
- 优先级最低,会被项目级配置覆盖。
4. 通过命令行参数指定
- 通过
--config
参数手动指定配置文件路径:eslint --config path/to/your/config.js src/
- 适用场景:临时使用特定配置(如测试不同规则)。
5. 配置继承(extends
)
- 可以通过
extends
字段继承其他配置(如共享配置包或预设):module.exports = {extends: ["eslint:recommended", // ESLint 官方推荐规则"plugin:vue/vue3-recommended", // Vue 3 规则"airbnb-base" // 第三方规则(如 Airbnb 风格)] };
- 共享配置包:可发布为 npm 包(如
eslint-config-airbnb
)。
6. 忽略文件(.eslintignore
)
- 类似
.gitignore
,用于排除不需要检查的文件/目录。 - 示例:
/dist/ /node_modules/ *.test.js
优先级总结
- 命令行
--config
指定的文件 - 项目级配置文件(如
.eslintrc.js
) package.json
中的eslintConfig
- 全局配置文件(
~/.eslintrc.*
)
如何选择?
- 推荐:使用
.eslintrc.js
(灵活 + 可注释) +.eslintignore
。 - 简单项目:直接写在
package.json
的eslintConfig
中。 - 团队协作:通过
extends
继承共享配置(如eslint-config-standard
)。
注意
- 避免同时存在多个配置文件(如
.eslintrc.json
和.eslintrc.js
),否则可能导致规则冲突。 - Vue 项目需确保配置了
vue-eslint-parser
(参考文档)。