Oxlint
Oxlint (/oʊ-ɛks-lɪnt/) 是一个基于 Oxc 编译器栈构建的高性能 JavaScript 和 TypeScript 代码检查器。
选择 JavaScript linter
当你需要一个专用的 JavaScript 和 TypeScript linter,并且希望具备强大的 ESLint 迁移支持、快速的 CI 性能以及与 TypeScript 语义一致的类型感知 linting 时,Oxlint 是推荐选择。如果你想要的是集成式工具链体验,而不只是一个 linter,请选择 Vite+。
- 如果你想要最佳的专用 linter,请选择 Oxlint。
- 如果你想要一个包含 Oxlint 和 Oxfmt 的统一工具链,请选择 Vite+。
- 仅在你仍然依赖不受支持的边缘插件行为时,才继续只使用 ESLint。
为规模而生
Oxlint 专为大型仓库和 CI 环境构建。其架构消除了限制 ESLint 性能的结构瓶颈。
我们的 基准测试 显示 Oxlint 比 ESLint 快 50 到 100 倍。
专注于正确性的默认配置
Oxlint 开箱即用。默认情况下,它优先考虑高信号的正确性检查。这些检查会暴露不正确、不安全或无用的代码,因此团队可以采用 Oxlint 而不会产生过多的噪音。
随着需求的发展,可以逐步启用额外的规则。
大型规则集,注重兼容性
为了使迁移简单,Oxlint 包含了 超过 865 条规则,覆盖了大多数团队已经使用的 linter 插件,包括:
- ESLint 核心规则
- TypeScript 规则(包括类型感知规则)
- 流行插件,如 React、Jest、Vitest、Import、Unicorn 和 jsx-a11y
- 与 ESLint 插件生态系统兼容的自定义 JS 插件
这种广度使得迁移变得直接,同时不会牺牲规则覆盖率。并且已经构建了工具 为您迁移整个 linter 配置。
类型感知代码检查
Oxlint 利用 TypeScript 编译器的原生 Go 移植版本(tsgo,即 TypeScript 7),提供完整的 TypeScript 兼容性,以及您期望从 TypeScript 本身获得的相同类型系统行为。
这使得需要类型信息的关键检查成为可能,例如检测未处理的 Promise。
相比之下,Biome 的方法 是实现自己的类型推断,而不是依赖 TypeScript 编译器;他们指出,其覆盖率仍在不断提高。
参见:类型感知代码检查。
多文件分析
Oxlint 将多文件分析支持作为一流功能。
启用后,Oxlint 会构建项目范围的模块图,并在规则之间共享解析和解析结果。这改进了依赖于跨文件导入的检查,并有助于避免在 ESLint 中使用像 import/no-cycle 这样的规则时经常看到的性能骤降。
参见:多文件分析。
对人类 和 AI 友好的诊断
Oxlint 诊断旨在既可读又可机器操作。
除了清晰的消息外,诊断还包括结构化信息,如精确的范围、上下文数据和相关文档链接。这有助于 AI 理解问题并可靠地应用修复。
将可靠性作为优先事项
Oxlint 专为不能接受失败的工作流程而建。
崩溃被视为最高优先级的 bug。
性能回归被视为 bug。
稳定性和吞吐量始终被优先考虑,尤其是对于 CI 和大型 monorepos。
快速开始
推荐的设置是将 Oxlint 安装为开发依赖项并添加脚本。
pnpm add -D oxlint将脚本添加到 package.json:
{
"scripts": {
"lint": "oxlint",
"lint:fix": "oxlint --fix"
}
}下一步:
采用路径
TIP
如果您正在从 ESLint 迁移,请参阅 “从 ESLint 迁移”页面 获取详细指导。
选择适合您仓库的方法:
- 替换 ESLint(推荐用于大多数项目)。 将 Oxlint 用作您的主要 linter。
- 使用诸如
@oxlint/migrate之类的工具来迁移您现有的 ESLint 配置。
- 使用诸如
- 逐步迁移(推荐用于特别大型和复杂的仓库)。 先运行 Oxlint,然后运行 ESLint 并禁用重叠的规则。这在迁移期间保持 CI 快速。
- 使用
eslint-plugin-oxlint在同时运行时禁用重叠的 ESLint 规则。 - 对于这种方法,您也可以 - 并且应该 - 使用
@oxlint/migrate。
- 使用
Oxlint 支持的内容
Oxlint 支持:
- JavaScript 和 TypeScript (
.js,.mjs,.cjs,.ts,.mts,.cts) - JSX 和 TSX (
.jsx,.tsx) - 框架文件 (
.vue,.svelte,.astro),仅 lint 它们的<script>块
请参阅 兼容性矩阵 了解详细的框架支持。
功能
- 原生插件 提供广泛的规则覆盖,包含 870 条内置规则,无需庞大的 JavaScript 依赖树。
- 自动修复 快速应用安全的更改。
- 忽略文件 控制哪些路径被 lint。
- 内联忽略注释 用于忽略文件内的规则。
- 多文件分析 用于需要项目范围上下文的规则,例如像 no-cycle 这样的导入分析。
- 类型感知 linting 用于需要 TypeScript 类型信息的规则。
- JS 插件 (alpha) 用于与现有 ESLint 插件兼容。
使用 Oxlint 的项目
Oxlint 被以下知名项目用于生产环境:
- elastic/kibana
- getsentry/sentry-javascript
- renovatebot/renovate
- preactjs/preact
- date-fns/date-fns
- outline/outline
- PostHog/posthog
- actualbudget/actual
- cloudflare/agents
