使用用 Rust 开发的 Oxlint 1.0 发布,赶紧上车

宣布 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!

你的反馈推动 Oxlint 向前发展!

立即试用!

现在就前往 安装指南,开始使用 Oxlint 吧!

或者深入了解 Oxlint 背后的项目:Oxc 项目主页

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师3 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学3 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端