Skip to content

Oxlint

Oxlint (/oʊ-ɛks-lɪnt/) 是一个基于 Oxc 编译器栈构建的高性能 JavaScript 与 TypeScript 代码检查工具。

面向大规模场景设计

Oxlint 专为大型代码仓库和 CI 环境打造。其架构消除了 ESLint 中限制性能的结构性瓶颈。

我们的 基准测试 显示,Oxlint 的速度比 ESLint 快 50 到 100 倍。

以正确性为核心的设计默认值

Oxlint 无需额外配置即可直接使用。默认情况下,它优先启用高信号度的正确性检查。这些检查能够发现代码中不正确、不安全或无用的部分,使团队可以在不产生过多噪音的前提下轻松采用 Oxlint。

随着需求演进,可以逐步启用更多规则。

覆盖广泛且持续增长的规则集合

Oxlint 包含 超过 690 条规则,覆盖大多数团队已使用的插件,包括:

  • ESLint 核心规则
  • TypeScript 规则
  • 常见插件如 React、Jest、Unicorn 及 jsx-a11y
  • 兼容 ESLint 插件生态系统的自定义 JS 插件

这一广泛的规则覆盖使得迁移过程简单高效,同时不会牺牲规则完整性。

支持类型感知的代码检查

Oxlint 利用了 TypeScript 编译器的原生 Go 实现(tsgo,又称 TypeScript 7),提供完整的 TypeScript 兼容性以及与 TypeScript 自身一致的类型系统行为。

这使得我们可以实现对类型有依赖的关键检查,例如检测“浮动的 Promise”。

相比之下,Biome 采用的方法是自行实现类型推断,而非依赖 TypeScript 编译器,他们也承认目前的覆盖率仍在提升中。

参见:类型感知的代码检查

多文件分析支持

Oxlint 将多文件分析作为一项核心能力。

启用后,Oxlint 会构建项目级的模块图,并在各规则间共享解析与依赖分析结果。这提升了依赖跨文件导入的检查效率,避免了类似 import/no-cycle 在 ESLint 中常见的性能陡降问题。

参见:多文件分析

适配 AI 的诊断信息

Oxlint 的诊断信息设计为既便于人类阅读,也易于机器处理。

除清晰的消息外,诊断还包含结构化信息,如精确的作用域范围和上下文数据。这有助于 AI 准确理解问题并可靠地应用修复。

可靠性优先

Oxlint 的设计目标是满足那些不容失败的工作流。

崩溃被视为最高优先级的缺陷。 性能下降也被视为缺陷。

稳定性和吞吐量始终被优先考虑,尤其是在 CI 环境和大型 monorepo 项目中。

快速上手

推荐的做法是将 Oxlint 安装为开发依赖,并添加脚本。

sh
pnpm add -D oxlint

package.json 中添加脚本:

package.json
json
{
  "scripts": {
    "lint": "oxlint",
    "lint:fix": "oxlint --fix"
  }
}

下一步:

采纳路径

TIP

如果你正从 ESLint 迁移,可参考 “从 ESLint 迁移”页面 获取详细指导。

根据你的仓库情况选择合适的方式:

  • 完全替换 ESLint(适用于大多数项目)。 将 Oxlint 作为主代码检查工具。
  • 逐步迁移(适用于大型仓库)。 先运行 Oxlint,再禁用重叠规则的情况下运行 ESLint。这样可在迁移过程中保持 CI 速度。

Oxlint 支持的功能

Oxlint 支持以下内容:

  • JavaScript 与 TypeScript(.js, .mjs, .cjs, .ts, .mts, .cts
  • JSX 与 TSX(.jsx, .tsx
  • 框架文件(.vue, .svelte, .astro)——仅检查其中的 <script>

功能特性

使用 Oxlint 的项目

Oxlint 已被多个知名项目在生产环境中采用,包括:

迁移指南

参考文档