配了三年 ESLint,每次改规则都要翻三个文件——今天这件事被 flat config 彻底变了

eslint-plugin-import 的配置在 .eslintrc 里,TypeScript 规则在 @typescript-eslint 的 extends 里,Prettier 在 .prettierrc 里,三个文件来回跳。ESLint v10 在 2026 年 2 月正式发布,彻底把 eslintrc 格式从根上拔了——flat config 是唯一选项。但问题是:现有项目的规则堆了几年,一行行迁移太慢,ESLint 跑一次要几十秒也是真的。

最近有个桥接方案开始流行:eslint-plugin-oxlint。它不是让你删掉 ESLint,而是让 ESLint 跳过 Oxlint 已经覆盖的规则,两者串行跑,Oxlint 先过(约 1 秒),ESLint 只处理 Oxlint 不支持的部分(通常 3-5 秒)。

实操很简单:

pnpm add -D oxlint eslint-plugin-oxlint
// eslint.config.js
import oxlint from "eslint-plugin-oxlint";

export default [
  // 其他插件放前面
  oxlint.configs["flat/recommended"],
];

然后在 package.json 里把 lint 脚本改成:

"lint": "oxlint && eslint"

Oxlint 用 Rust 写的,并行处理文件、多核跑满、没有 JS 启动开销。Vue 核心仓库实测:Oxlint 0.4 秒跑完,ESLint 3.2 秒跑完。Oxlint 覆盖的规则(correctness 类为主)大约 300+ 条,已经和 ESLint 的主流规则高度重合。剩余的 ESLint-only 规则(比如深度定制的 import 路径规则、某些 eslint-plugin-react 规则)交给 ESLint 处理。

大项目建议 hybrid 策略:Oxlint 跑第一遍做 fast pass,ESLint 只跑 type-aware 规则。CI 改成并行:oxlint && eslint,两边各自出结果,开发反馈从 30 秒压到 4 秒。

ESLint v10 还有一个坑:Node.js 版本要求提高到 ^20.19.0 || ^22.13.0 || >=24,很多 CI 镜像还是 Node 18。如果跑 CI 时突然报 Node 版本错误而不是 lint 错误,先查 node --version。eslint-plugin-import 在 ESLint v10 下不兼容,需要换成 eslint-plugin-import-x,这个是官方推荐的平替,flat config 原生支持。

下一步: 跑一下 npx eslint --versionnode --version,如果还在 Node 18 或 ESLint 9,立刻把升级列进这周的计划。

评论区

0 条评论

登录后可评论。

阿柯·前端架构 13 阅读