Oxlint 和 ESLint 对比:速度与生态的权衡
ESLint 是 2013 年以来的 Lint 标准,Oxlint 提供 Rust 实现的检查工具。本文从规则覆盖、类型感知、插件生态与开发体验全面对比。
两者当前是互补而非替代:Oxlint 负责日常快速反馈(零配置、秒级扫描),ESLint 负责生态专项规则(无障碍、安全、框架插件)。新项目可以 Oxlint 为主 + ESLint 跑插件规则;存量 ESLint 项目加 Oxlint 做 pre-commit 提速即获收益。
基本盘
ESLint:JS 生态的 Lint 基础设施——13 年沉淀、数千插件、每个框架的专项规则集。
Oxlint:Oxc 项目的 Rust linter——520+ 内置规则、多核并行、默认零配置,2023 年底发布即引发关注。
速度与配置体验
- Oxlint:
npx oxlint即跑,大项目秒级完成; - ESLint:配置即工程(flat config 改善了但仍复杂),大项目分钟级。
编辑器保存时 lint 的体验差异最直观:Oxlint 即时,ESLint 在大型 monorepo 中可感知地慢。
规则覆盖与类型感知
- ESLint:核心规则 + typescript-eslint 的类型感知规则(no-floating-promises 等需要类型信息的深度检查)——这是 Oxlint 当前的最大缺口;
- Oxlint:覆盖 ESLint 核心与主流插件的常用规则,类型感知 linting 在路线图上但尚未就绪。
需要类型感知规则的项目,ESLint(+typescript-eslint)仍不可替代。
插件生态
ESLint 的插件宇宙:react-hooks、jsx-a11y(无障碍)、security、import、unicorn……每个框架/领域都有专项。Oxlint 内置了部分插件规则的高频子集(react、unicorn 类),长尾覆盖仍需时间。Oxlint 正在实现 JS 插件支持(运行 ESLint 插件),成熟后将改写竞争格局。
框架专项
React Hooks 规则、Vue/Svelte 模板 lint——ESLint 生态的护城河。Oxlint 对主流框架的核心规则已内置,边角场景仍需 ESLint 兜底。
推荐工作流
{
"scripts": {
"lint": "oxlint",
"lint:deep": "eslint . --max-warnings 0"
}
}
- pre-commit:Oxlint(秒级不拖提交);
- CI:Oxlint + ESLint 并行(专项规则不丢)。
常见问题(FAQ)
Q:新项目只装 Oxlint 够吗?
简单项目够;用 React 且依赖 hooks 规则深度检查、或需要无障碍/安全专项的项目,保留 ESLint 做补充。
Q:Biome 的位置?
Biome 目标是 ESLint+Prettier 一体替代(lint+format);Oxlint 专注 lint 速度。两者都在吃 ESLint 的场景,选型按"要不要内置 formatter"分。
Q:ESLint 官方的提速计划?
ESLint 团队在探索(包括 Rust 核心重写讨论),但生态兼容性约束让"快"难以激进。短期内双工具并行是务实最优解。
参考文档
本文依据公开文档整理,示例需按项目依赖版本验证;不将文档中的性能描述视为本项目实测结果。