宣布 Oxlint 1.0 正式发布
简讯: Oxlint 首个稳定版本正式发布!性能相比 ESLint 提升了 50~100 倍 ,支持 500 多条 ESLint 规则 ,并已在 Shopify、Airbnb、梅赛德斯-奔驰 等公司使用。现在就试试看吧!
什么是 Oxlint?
Oxlint 是一个基于 Rust 的 JavaScript 和 TypeScript 代码检查工具 (linter),设计目标是 极致性能 和 快速上手。
自 2023 年 12 月首次宣布以来,Oxlint 已历经重大改进,现在发布其第一个稳定版本 1.0 。同时,我们也宣布 Oxlint 拥有一位专职维护者 Cameron,并建立了一支不断扩大的核心开发团队,致力于其维护与持续改进。
真实世界的影响
我们对 Oxlint 在实际大型代码库中的性能表现感到非常自豪------它显著降低了 CI 的执行成本。
我们感谢 5,200 名早期用户,以及以下企业和项目的支持:
- Shopify:前端平台团队在 Shopify 后台管理系统中使用 Oxlint。
- Airbnb :在超 126,000 个文件 上运行
oxc/no-barrel-file
和import/no-cycle
多文件分析,仅需 7 秒完成;而 ESLint 在执行这些规则时会超时。 - 梅赛德斯-奔驰 :将 ESLint 替换为 Oxlint 后,检查时间减少了 71% ,部分项目性能提升高达 97% 。
- 大型开源项目 :包括运行时 Bun 和前端框架 Preact 等。
我们曾在最大型的代码库上测试,结果如下:
使用 10 个线程、101 条规则,在 264,925 个文件上完成检查仅用时 22.5 秒。
根据 X 和 Bluesky 上的真实用户反馈,Oxlint 的运行速度约为 每秒检查 10,000 个文件(视线程数而定)。
快速开始
Oxlint 非常适合希望立刻开始代码检查、无需复杂配置的开发者。
开箱即用,无需任何配置:
ruby
# 支持以下包管理器
npm
pnpm
yarn
bun
deno
# 一键运行
$ npx oxlint@latest
虽然不需要配置,但 Oxlint 也支持通过 .oxlintrc.json
文件进行配置,适用于更复杂或大型项目。
该配置格式基于 ESLint v8 的 flat config ,方便迁移,逻辑熟悉。每个源文件将使用其最近的配置文件,并支持使用 override 针对特定文件或路径。此外,你还可以使用共享配置来保持团队一致性。
如果你的项目已使用 ESLint,可以使用 oxlint-migrate
工具将现有 ESLint flat-config 文件迁移到 Oxlint。也可以使用 eslint-plugin-oxlint
来关闭与 Oxlint 重叠的 ESLint 规则,从而同时使用两者。推荐方式为:
oxlint && eslint
这样可以充分利用 Oxlint 的快速反馈。
有关更详细的集成方法,请查看 安装指南。
版本管理策略
与运行时代码库不同,linter 的更新只影响返回的诊断结果。Oxlint 遵循 语义化版本控制(SemVer) :
- 补丁版本(Patch) :仅修复 bug;
- 次版本(Minor) :增加规则和诊断覆盖范围,不引入配置变更;
- 主版本(Major) :包含 CLI 或配置变更,可能需要迁移。
⚠️ 注意:虽然次版本不会破坏配置,但新增规则可能揭示之前未发现的问题,从而影响 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 独有规则,如:
- 错误的比较顺序(bad comparison sequence)
- 常量比较(const comparisons)
- 仅用于递归函数的声明(only used in recursion)
灵活配置
通过 .oxlintrc.json
进行灵活配置,支持:
- 指定目录的嵌套配置
- 针对特定文件路径或类型的覆盖规则(override patterns)
- 共享配置扩展,用于团队统一规范
编辑器集成
一流的编辑器支持,包括:
- VS Code
- IntelliJ IDEA / WebStorm
- Zed Editor
- 通用 LSP(语言服务器协议)支持,兼容更多编辑器
详细诊断提示
Oxlint 旨在提供清晰、可操作的错误提示------不仅描述问题,还会可视化并建议修复方式。
示例 CLI 输出:
javascript
> oxlint
error: Avoid using == for comparing to null. Use === instead.
file: src/utils.ts:10:15
suggestion: Replace `==` with `===`
性能基准
我们的测试显示,在相同配置下,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 多位贡献者共同努力的成果。我们感谢每一个 bug 报告、功能建议和代码提交。
特别致谢:
- @branchseer:实现多文件分析运行时
- @camc314, @mysteryven, @shulaoda:实现了许多复杂规则并进行测试优化
- @camchenry:实现嵌套配置支持
- @DonIsaac:改进配置、文档与官网,并代表 Oxlint 出席 SquiggleConf 2024
- @leaysgur:实现 RegExp 解析器与 JSDoc 插件
- @Sysix :维护
eslint-plugin-oxlint
,并为语言服务器和 VSCode 扩展作出重大贡献 - @u9g, @rzvxa:实现控制流图分析
加入社区
我们欢迎你提出反馈,与我们一同改进 Oxlint!
- Discord :加入社区服务器
- GitHub Discussions :参与讨论
- 问题反馈 :报告 Bug 或请求新功能
你的反馈推动 Oxlint 向前发展!
立即试用!
现在就前往 安装指南,开始使用 Oxlint 吧!
或者深入了解 Oxlint 背后的项目:Oxc 项目主页