Skip to content

Oxlint

Oxlint (/oʊ-ɛks-lɪnt/) 是一个基于 Oxc 编译器栈构建的高性能 JavaScript 和 TypeScript linter。

为规模化而建

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

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

专注于正确性的默认配置

Oxlint 开箱即用。默认情况下,它优先考虑高信号的正确性检查。这些检查会暴露不正确、不安全或无用的代码,因此团队可以采用 Oxlint 而不会产生过多的噪音。

随着需求的发展,可以逐步启用额外的规则。

大型规则集,注重兼容性

为了使迁移简单,Oxlint 包含了 超过 715 条规则,覆盖了大多数团队已经使用的 linter 插件,包括:

  • ESLint 核心规则
  • TypeScript 规则(包括类型感知规则)
  • 流行插件,如 React、Jest、Vitest、Import、Unicorn 和 jsx-a11y
  • 与 ESLint 插件生态系统兼容的自定义 JS 插件

这种广度使得迁移变得直接,同时不会牺牲规则覆盖率。并且已经构建了工具 为您迁移整个 linter 配置

类型感知 linting

Oxlint 利用 TypeScript 编译器的原生 Go 端口 (tsgo aka TypeScript 7),提供完整的 TypeScript 兼容性和您期望从 TypeScript 本身获得的相同类型系统行为。

这使得需要类型的任务关键型检查成为可能,例如检测浮动的 promises。

相比之下,Biome 的方法 是实现自己的类型推断,而不是依赖 TypeScript 编译器,他们指出覆盖率仍在改进中。

参见:类型感知 linting

多文件分析

Oxlint 将多文件分析支持作为一流功能。

启用后,Oxlint 会构建项目范围的模块图,并在规则之间共享解析和解析结果。这改进了依赖于跨文件导入的检查,并有助于避免在 ESLint 中使用像 import/no-cycle 这样的规则时经常看到的性能骤降。

参见:多文件分析

对人类 AI 友好的诊断

Oxlint 诊断旨在既可读又可机器操作。

除了清晰的消息外,诊断还包括结构化信息,如精确的范围、上下文数据和相关文档链接。这有助于 AI 理解问题并可靠地应用修复。

将可靠性作为优先事项

Oxlint 专为不能接受失败的工作流程而建。

崩溃被视为最高优先级的 bug。 性能回归被视为 bug。

稳定性和吞吐量始终被优先考虑,尤其是对于 CI 和大型 monorepos。

快速开始

推荐的设置是将 Oxlint 安装为开发依赖项并添加脚本。

sh
pnpm add -D oxlint

将脚本添加到 package.json

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

下一步:

采用路径

TIP

如果您正在从 ESLint 迁移,请参阅 “从 ESLint 迁移”页面 获取详细指导。

选择适合您仓库的方法:

  • 替换 ESLint(推荐用于大多数项目)。 将 Oxlint 用作您的主要 linter。
    • 使用诸如 @oxlint/migrate 之类的工具来迁移您现有的 ESLint 配置。
  • 逐步迁移(推荐用于特别大型和复杂的仓库)。 先运行 Oxlint,然后运行 ESLint 并禁用重叠的规则。这在迁移期间保持 CI 快速。

Oxlint 支持的内容

Oxlint 支持:

  • JavaScript 和 TypeScript (.js, .mjs, .cjs, .ts, .mts, .cts)
  • JSX 和 TSX (.jsx, .tsx)
  • 框架文件 (.vue, .svelte, .astro),仅 lint 它们的 <script>

请参阅 兼容性矩阵 了解详细的框架支持。

功能

使用 Oxlint 的项目

Oxlint 被以下流行项目在生产环境中使用:

迁移

参考