使用用 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-fileimport/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 项目主页

相关推荐
加班是不可能的,除非双倍日工资2 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi2 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
gnip3 小时前
vite和webpack打包结构控制
前端·javascript
excel3 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
阿华的代码王国3 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼3 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy3 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT4 小时前
promise & async await总结
前端
Jerry说前后端4 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
画个太阳作晴天4 小时前
A12预装app
linux·服务器·前端