Skip to content

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-fileimport/no-cycle,在 CI 上仅需 7 秒完成检测。而 ESLint 的实现则会超时。
  • 梅赛德斯-奔驰,他们观察到从 ESLint 切换到 Oxlint 后,代码检查时间减少了 71%,部分项目甚至实现了高达 97% 的速度提升。
  • 大型开源项目,涵盖运行时如 Bun,框架如 Preact

在我们发现的最大代码仓库中,Oxlint 报告如下结果:

在 264,925 个文件上,使用 10 个线程运行 101 条规则,耗时 22.5 秒。

根据在 XBluesky 上发布的实际案例,Oxlint 的运行速度约为每秒处理 10,000 个文件,具体取决于所使用的线程总数。

快速入门

对于希望无需花费数小时配置工具即可开始代码检查的开发者而言,Oxlint 正是理想之选。无需任何设置,即可立即发现问题:

无需配置,直接运行。

sh
$ npx oxlint@latest
sh
$ pnpm dlx oxlint@latest
sh
$ yarn dlx oxlint@latest
sh
$ bunx oxlint@latest
sh
$ 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-unicorneslint-plugin-jsdoceslint-plugin-reacteslint-plugin-react-hookseslint-plugin-jesteslint-plugin-import 等流行插件的规则。
  • Oxlint 独有的规则,例如 错误的比较序列常量比较仅在递归中使用

灵活的配置方式

通过 .oxlintrc.json 文件配置 Oxlint,支持:

  • 嵌套配置,可针对特定目录应用。
  • 覆盖模式,用于精准匹配特定文件类型或路径。
  • 共享配置扩展,保持团队一致性。

编辑器集成

提供一流的编辑器支持,包含:

有用的诊断信息

Oxlint 旨在提供清晰、可操作的错误提示——不仅描述问题,还可视化问题并提供修复建议。

CLI 演示
Oxlint 在终端中运行并显示详细的错误报告

性能基准测试

我们的 基准测试 显示,在相同配置下,Oxlint 的速度约为 ESLint 的 50~100 倍

工具耗时
oxlint (多线程)615.3 毫秒
oxlint (单线程)1.840 秒
eslint33.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 的反馈,并热切盼望看到它如何帮助改善您的开发流程。欢迎与我们联系:

您的反馈推动着 Oxlint 的演进。

试试看吧

要开始使用,请参考 安装指南,或了解更多关于 Oxc 项目 的信息。