npm装了八年ESLint,今天Oxlint把CI跑完的时间从一首歌变成了一句话

npm装了八年ESLint,今天Oxlint把CI跑完的时间从一首歌变成了一句话。

你上次等CI lint结果的时候干了什么?刷了两条视频?去倒了杯水?回来发现还没跑完?

这不怪你。ESLint v8跑一个200文件的React项目要3秒,1000文件要15秒,VS Code那种体量的代码库要25秒。人在CI前面等lint,本质上是在等一个JavaScript虚拟机冷启动——这不是工具慢,是runtime的天花板就卡在那儿。

2026年,前端圈终于给出了答案:Oxlint

三句话讲清楚Oxlint是什么

Oxlint是Rust写的ESLint替代品,Oxc项目出品。官方benchmark数据(基于VS Code源码,3684个文件):

工具 耗时 相对速度
ESLint v8 ~25s 1x
Oxlint ~250ms 100x

Shopify实测:原来ESLint跑75分钟,切Oxlint后10秒。

不是数字游戏——是物理。Rust编译成native binary,没有JIT、没有GC、没有Node.js启动开销。解析AST这件事,Rust天生比JavaScript快一个数量级。

ESLint 9 flat config:你自己先变快了

ESLint v9(2026年2月发布)做了一件正确的事:废弃了.eslintrc.*层叠配置,改用eslint.config.js单文件flat config。

这不只是配置格式的变化——这是性能优化的开始。

Johal.in对12个企业级monorepo(10~100个包)的基准测试结果:

指标 Legacy Config Flat Config 提升
30包monorepo配置文件数量 31个 1个 -96.8%
500文件配置解析时间 1870ms 210ms -88.8%
1K文件lint内存占用 142MB 47MB -66.9%
重复运行时间(含缓存) 920ms 110ms -88%
配置解析占总CPU时间 34% 6% -82.4%

换句话说:光升级到ESLint 9 flat config,你的lint就能快一截。但这还不够——flat config只是让你少跑冤枉路,ESLint本身的执行速度没变。

Oxlint 1.0现在能做什么

2026年8月Oxlint 1.0发布,覆盖情况:

✅ 已覆盖

  • ESLint核心规则(200+)
  • TypeScript ESLint规则
  • React / JSX / Vue规则
  • Jest / Vitest规则
  • Unicorn / JSX-a11y等社区规则

❌ 暂不支持

  • 部分老旧插件的规则(如eslint-plugin-import部分规则)
  • 类型感知规则(tsgo正在做,2026年底有望)

实操数据:200+文件的React项目,ESLint 9 flat config 3.2秒,Oxlint 1.0 0.08秒——40倍差距。

三种迁移策略,总有一款适合你

策略一:渐进混合(大型项目推荐)

适合:已有深度ESLint配置、团队成员多、不能一刀切的项目。

pnpm add -D oxlint eslint-plugin-oxlint

eslint.config.js里:

import oxlint from 'eslint-plugin-oxlint'

export default [
  oxlint.configs.recommended, // Oxlint先跑
  // 你的其他配置...
]

原理:Oxlint先过滤它支持的规则,ESLint只处理Oxlint不支持的。两边并行,互不干扰。

Shopify/Airbnb/Mercedes-Benz这些大厂的生产路径:Oxlint做CI前置过滤,ESLint保留深度规则。大项目hybrid模式实测:Oxlint ~1秒 + ESLint只跑剩余规则 ~2-3秒,总时间从20秒+降到3秒以内。

策略二:直接全切(中小项目推荐)

适合:文件数<500、主要用React/Vue+TypeScript、没有深度定制ESLint插件的项目。

pnpm remove eslint
pnpm add -D oxlint
npx oxlint@latest --init

配置文件.oxlintrc.json

{
  "plugins": ["react", "typescript"],
  "rules": {
    "react/no-unknown-property": "error",
    "no-unused-vars": "warn"
  }
}

CI替换:

# 之前
- run: npx eslint .

# 之后
- run: npx oxlint .

策略三:先跑benchmark再决定

所有速度 claims 都是别人的数字。你的repo才说了算:

npx eslint . --format json > eslint-result.json
npx oxlint . --format json > oxlint-result.json
# 比对规则覆盖率

Biome v2:一个工具同时 lint + format

补充一个2026年新玩家:Biome v2

Biome = Prettier(格式化)+ ESLint(linting),Rust实现,423条规则,内置formatter不需要Prettier。

横评定位:

  • ESLint:最完整生态,700+规则,4000+插件,但最慢
  • Oxlint:最快,300条规则,lint only,适合做CI速度层
  • Biome:格式化+lint合一,423规则,10-20x快于ESLint,适合新项目

新项目建议:Biome day one + React项目加一行ESLint专门配react-hooks。这是2026年最低摩擦的现代化前端配置。

下一步

  1. 今晚:跑npx oxlint --init,看它报哪些规则不支持
  2. 本周:benchmark你的真实项目:time npx eslint . vs time npx oxlint .
  3. 下个月:选迁移策略,CI里加一个Oxlint前置步骤,先看到提速收益再动深度配置

ESLint不会死——它的生态深度无可替代。但2026年了,你的CI不该再等一个JavaScript虚拟机热身。

评论区

0 条评论

登录后可评论。

阿柯·前端架构 13 阅读