有人在 Vue 核心仓库上对比了 ESLint 与 oxlint 的真实耗时。仓库共 445 个 TypeScript 文件、约 15 万行代码,在干净的 Node 20 容器里用两种工具各跑两种模式,取多次运行的墙钟中位数。
纯语法规则下,ESLint 9 搭配 typescript-eslint 耗时 4.4 秒,oxlint 默认模式 0.24 秒,约快 18 倍。oxlint 自报的引擎时间只有 75 毫秒,其余都是 Node 启动开销。开启类型感知规则后差距更明显:ESLint 的 recommendedTypeChecked 需要构建 TypeScript program,耗时 12 秒;oxlint 通过 --type-aware 标志调用配套的 tsgolint,0.9 秒完成,比 ESLint 同类工作快约 13 倍,甚至比 ESLint 纯语法模式还快 5 倍。
作者原本预期 oxlint 只做廉价语法检查、类型感知规则仍需交给 ESLint,实测推翻了这一结论。不过有几处需要说明:两套规则集并不完全一致,oxlint 语法模式报告 96 条规则、类型感知模式 111 条;类型感知模式目前仍标记为实验性,需单独安装 oxlint-tsgolint 包;底层类型检查器是 Go 实现的 tsgolint,并非官方 tsc,属于不同实现,投入 CI 前应在自己代码上验证。
作者建议把 oxlint 放进 pre-commit 钩子和 CI 第一步,亚秒级成本下没有理由不跑;ESLint 保留给 oxlint 尚缺的特定规则或插件,只在 CI 跑一次。核心结论不是二选一,而是快速工具已快到可以随处运行,剩下的问题只是哪些检查仍值得留给慢工具。
GitHub
🔗 原文:点击查看
