Oxlint v1.0 稳定版发布
INFO
本文博客最初发布于 VoidZero 官方网站 https://voidzero.dev/posts/announcing-oxlint-1-stable。
TL;DR:Oxlint 的首个稳定版本已正式发布!相比 ESLint,性能提升了 50~100 倍,支持超过 500 条 ESLint 规则,并已在 Shopify、Airbnb、梅赛德斯-奔驰 等大型企业中投入使用,建议立即尝试。立即开始使用。
Oxlint 是一个基于 Rust 构建的 JavaScript 与 TypeScript 代码检查工具,旨在快速且易于采用。自 2023 年 12 月首次发布以来,Oxlint 已经历显著改进,现正式推出其首个稳定版本——1.0 版本。
除了稳定版发布外,我们还宣布:Oxlint 已拥有专职全职维护者 Cameron,以及一支不断壮大的核心团队,致力于持续维护和提升该工具。
实际应用影响
我们对 Oxlint 的卓越性能及其在真实大规模代码库中的实际影响感到无比自豪,这直接带来了持续集成(CI)成本的降低。
感谢我们的 5,200 名早期使用者,以及以下公司与项目:
- Shopify:其前端平台团队在 Shopify 管理控制台中使用 Oxlint。
- Airbnb:他们在超过 126,000 个文件上使用多文件分析功能 oxc/no-barrel-file 与 import/no-cycle,在 CI 上仅需 7 秒完成检测。而 ESLint 的实现则会超时。
- 梅赛德斯-奔驰,他们观察到从 ESLint 切换到 Oxlint 后,代码检查时间减少了 71%,部分项目甚至实现了高达 97% 的速度提升。
- 大型开源项目,涵盖运行时如 Bun,框架如 Preact。
在我们发现的最大代码仓库中,Oxlint 报告如下结果:
在 264,925 个文件上,使用 10 个线程运行 101 条规则,耗时 22.5 秒。根据在 X 与 Bluesky 上发布的实际案例,Oxlint 的运行速度约为每秒处理 10,000 个文件,具体取决于所使用的线程总数。
快速入门
对于希望无需花费数小时配置工具即可开始代码检查的开发者而言,Oxlint 正是理想之选。无需任何设置,即可立即发现问题:
无需配置,直接运行。
$ npx oxlint@latest$ pnpm dlx oxlint@latest$ yarn dlx oxlint@latest$ bunx oxlint@latest$ deno run npm:oxlint@latest虽然无需设置或配置即可使用,但 Oxlint 支持通过 .oxlintrc.json 文件进行配置,这对于大型项目或需要高度定制的项目非常有用。
该配置格式基于 ESLint v8 的扁平配置(flat config),迁移过程简单且熟悉。每个源文件将使用最近的适用配置进行检查,你还可以使用覆盖规则来精准匹配特定的 glob 模式。同时,也可通过扩展共享配置来确保团队间的一致性。
对于已使用 ESLint 的项目,可使用 oxlint-migrate 将现有的 ESLint 扁平配置文件迁移到 Oxlint。
此外,eslint-plugin-oxlint 可在两个检查器共存时禁用重复的 ESLint 规则。建议同时运行 oxlint && eslint,以充分利用 Oxlint 更快的反馈循环。
有关如何使用 Oxlint 及与项目或编辑器集成的详细说明,请参阅 安装指南。
版本管理
与分发运行时代码的库不同,检查工具仅更改其返回的诊断信息。Oxlint 遵循语义化版本控制:
- 补丁版本:仅修复问题。
- 次要版本:扩展规则覆盖范围与诊断能力,无需修改配置。
- 主版本:命令行接口或配置结构变更,可能需要迁移。
注意:即使次要版本也可能因新增规则暴露之前隐藏的问题而导致你的 CI 中断。更多详情请参见我们的 版本管理指南。
主要亮点
全面的规则覆盖
Oxlint 集成了来自多个来源的 500 多条规则:
- 完整的 ESLint 规则集,包括
typescript-eslint提供的 TypeScript 特有规则(排除类型检查相关规则)。 - 来自
eslint-plugin-unicorn、eslint-plugin-jsdoc、eslint-plugin-react、eslint-plugin-react-hooks、eslint-plugin-jest与eslint-plugin-import等流行插件的规则。 - Oxlint 独有的规则,例如 错误的比较序列、常量比较 与 仅在递归中使用。
灵活的配置方式
通过 .oxlintrc.json 文件配置 Oxlint,支持:
- 嵌套配置,可针对特定目录应用。
- 覆盖模式,用于精准匹配特定文件类型或路径。
- 共享配置扩展,保持团队一致性。
编辑器集成
提供一流的编辑器支持,包含:
- VS Code
- IntelliJ IDEA 与 WebStorm
- Zed 编辑器
- 对其他编辑器的语言服务器协议(LSP)支持。
有用的诊断信息
Oxlint 旨在提供清晰、可操作的错误提示——不仅描述问题,还可视化问题并提供修复建议。
Oxlint 在终端中运行并显示详细的错误报告
性能基准测试
我们的 基准测试 显示,在相同配置下,Oxlint 的速度约为 ESLint 的 50~100 倍。
| 工具 | 耗时 |
|---|---|
| oxlint (多线程) | 615.3 毫秒 |
| oxlint (单线程) | 1.840 秒 |
| eslint | 33.481 秒 |
未来路线图
Oxlint 1.0 只是起点!尽管已趋于稳定,但我们仍计划在未来版本中加入重要特性和改进:
自定义规则 —— 即将推出支持 JavaScript 插件,使团队能够编写与 Oxlint 架构无缝集成的自定义规则。
性能优化 —— 持续提升解析与分析速度。
细粒度(按 glob)配置 —— 支持 ESLint v9 风格的配置。
致谢
Oxlint 1.0 是 超过 200 名贡献者 集体努力的成果。我们感谢每一位提交的错误报告、功能请求和代码贡献。
特别感谢以下成员:
- @branchseer:实现了多文件分析运行时。
- @camc314、@mysteryven 与 @shulaoda:实现了大量复杂的代码检查规则,进行了充分测试,并持续优化各项功能。
- @camchenry:实现了嵌套配置支持。
- @DonIsaac:改进了配置、文档与官网内容,并代表 Oxc 出席了 SquiggleConf 2024。
- @leaysgur:完成了正则表达式解析器与 JSDoc 插件。
- @Sysix:维护了
eslint-plugin-oxlint,并对语言服务器与 VSCode 扩展作出了重大贡献。 - @u9g 与 @rzvxa:实现了控制流图分析。
加入社区
我们非常期待听到您对 Oxlint 的反馈,并热切盼望看到它如何帮助改善您的开发流程。欢迎与我们联系:
- Discord:加入我们的 社区服务器 进行实时讨论
- GitHub:在 GitHub 讨论区 分享反馈
- 问题追踪:在我们的 问题追踪器 中报告缺陷或提出新功能需求
您的反馈推动着 Oxlint 的演进。


