首页/开发/代码质量与评审速查/ESLint Flat Config(v9 默认)
规范与静态检查65 条

ESLint Flat Config(v9 默认)

ESLint 9 起默认使用 Flat Config(eslint.config.js):配置为数组式导出,手动组合文件范围与规则,旧 .eslintrc 进入兼容维护状态。

Flat Config 是什么

ESLint 9 起默认使用 Flat Config:配置写成 eslint.config.js,默认导出一个数组,每个元素包含文件范围与规则。相比旧的级联配置,文件匹配与规则合并都变成显式的,团队不再依赖 extends 的隐式覆盖顺序;老配置可以借助兼容层过渡。

基本信息

配置形态eslint.config.js 默认导出数组
数组元素files 指定范围,rules 指定规则
兼容过渡用 FlatCompat 加载旧的 extends 配置
版本ESLint 9 及以后默认按此格式查找配置

典型使用场景

  • 新项目:直接采用 flat config,不必再考虑级联覆盖规则
  • 存量项目迁移:一个目录一个目录地搬,中间配合过渡层
  • 按语言分别配置:对 JS、TS、组件文件设置不同规则集
  • 统一忽略范围:用 ignores 项集中声明忽略目录
  • 插件接入:每个插件作为独立配置项引入,来源更清楚

迁移时的检查点

  • 插件是否已经提供 flat 版本
  • 旧的 extends 与 overrides 如何映射到数组元素
  • 忽略目录是否全部搬进 ignores 项
  • 编辑器与 CI 是否使用同一份配置

示例

示例
// eslint.config.js
export default [
  { files: ["**/*.js"], rules: { "no-unused-vars": "error", eqeqeq: "error" } },
  { files: ["**/*.test.js"], rules: { "no-console": "off" } },
  { ignores: ["dist/**", "coverage/**"] },
];

新旧写法对照

旧配置flat 配置
extends 级联数组元素按顺序覆盖
overrides 匹配每个元素自带 files
独立的忽略文件配置里的 ignores 项
插件名字符串显式导入插件对象
新项目直接采用 flat config;老项目按插件支持度分批迁移,中间用兼容层过渡。
在评审中的用法:把配置迁移与规则调整分成两次提交,评审者可以只看配置本身;规则松紧要说明影响范围,避免顺带放宽整条检查。
数组顺序决定覆盖关系:越靠后的元素优先级越高,把关闭规则的那一项放在最后,通常就是团队想要的效果。
把忽略目录写进配置之后,旧的忽略文件就可以删掉,避免两者并存时出现漏网文件。
两种配置格式长期并存:实际生效的规则与预期不符,排查时容易找错文件。

易错点

  • 插件还不支持 flat:迁移受阻,需要替代方案或兼容层过渡
  • 两种配置格式并存:实际生效的规则与预期不一致
  • 忽略清单只写在旧文件里:flat 配置下不再读取,忽略范围静默失效
  • 迁移与规则调整混在一次改动:出问题时无法判断是哪一步引起的
  • 迁移时顺手关掉报错最多的规则:迁移完成后没人记得补回来
  • 把同一份规则复制到多个数组元素里:改一处漏一处,两边行为不一致

数据来源与参考

  • ESLint 官方文档(Flat Config 介绍)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌