Oxlint Beta
本文章宣布 Oxlint 进入公开测试版。 自此之后,Oxlint 已发布稳定版本 1.0!请参阅 Oxlint v1.0 稳定版公告,了解最新功能和改进。
我们非常激动地宣布,经过社区超过一年的开发,Oxlint 现已进入公开测试阶段!
这一里程碑标志着在功能完整性、性能和稳定性方面迈出了重要一步。
如何使用
现阶段,Oxlint 可用于小型到中型项目中完全替代 ESLint。
对于大型项目,我们的建议是通过 eslint-plugin-oxlint 关闭 ESLint 规则,并在本地或 CI 环境中优先运行 Oxlint,以获得更快的反馈循环。
要测试你的代码库中的 Oxlint,可以在代码库根目录下使用任意包管理器:
$ npx oxlint@latest$ pnpm dlx oxlint@latest$ yarn dlx oxlint@latest$ bunx oxlint@latest$ deno run npm:oxlint@latest关于如何使用 Oxlint 以及将其集成到你的项目或编辑器中的详细说明,请参阅 安装指南。
自正式发布以来的新功能亮点
- 显著的性能提升,相较于上一版本最快可达两倍速度
- 内置超过 500 条规则,无需额外安装
- 大量来自
typescript、unicorn、react、react-perf、nextjs、import、jsdoc、jsx-a11y、node、promise、jest、vitest插件的规则现已完整支持。 - 支持通过
.oxlintrc.json配置文件 进行配置,包括 嵌套配置文件、使用extends在文件间共享配置、对特定文件应用overrides等。 - 无需额外配置即可对
.astro、.svelte和.vue文件中的<script>内容进行检查。 - 支持对文件应用 自动修复 和建议。
更多规则,更强性能
我们致力于让 Oxlint 功能更完善,支持众多最常用的 ESLint 规则和插件,同时我们也大幅提升了 Oxlint 的执行速度。
最初的 Oxlint 通用可用性(GA)版本 共包含 205 条规则,其中 70 条为默认启用。本次测试版共包含 502 条规则,其中 99 条默认启用(默认规则数量增长了 41%)。
| 规则类型 | 规则数量(GA) | 规则数量(beta) | 增加 |
|---|---|---|---|
| 默认规则 | 70 | 99 | +29 条规则 |
| 正确性 | 88 | 173 | +88 条规则 |
| 性能 | 0 | 9 | +9 条规则 |
| 限制 | 15 | 64 | +49 条规则 |
| 严格 | 43 | 79 | +36 条规则 |
| 风格 | 38 | 137 | +99 条规则 |
| 警告 | 7 | 28 | +21 条规则 |
| 总规则数 | 205 | 502 | +297 条规则 |
尽管新增了大量默认启用的规则,但 Oxlint 相比以往任何时候都更快。以下是一些在流行仓库上的 基准测试 结果:
| 仓库 | 文件数量 | 诊断耗时(GA) | 诊断耗时(beta) | 提升 |
|---|---|---|---|---|
elastic/kibana | 68,591 | 6.02s | 3.11s | 1.94x |
microsoft/vscode | 5,703 | 1.697s | 0.792s | 2.14x |
vitest-dev/vitest | 1,732 | 105ms | 50ms | 2.1x |
vuejs/core | 1,063 | 217ms | 89ms | 2.44x |
发展路线图
用户最常请求的功能之一是支持现有的自定义 ESLint 插件。我们一直在积极开发该功能的前置条件,并致力于实现基于 JavaScript 编写的高性能插件支持。我们希望该功能能在下一个主要版本中上线,并将在不久的将来提供更多相关信息。
我们还计划持续改进 IDE/编辑器集成,进一步增强对 VSCode、Zed、coc.nvim 和 IntelliJ 插件的支持。
致谢
没有超过 200 名项目的贡献者,Oxlint 测试版无法实现。
特别感谢:
- @cam314、@mysteryven 以及 @shulaoda 在实现众多复杂检查规则、测试以及持续优化方面的付出。
- @Sysix 维护了
eslint-plugin-oxlint。 - @DonIsaac 对配置、文档和网站的改进,以及代表 Oxc 参加 SquiggleConf 2024 的贡献。
- @leaysgur 贡献了正则表达式解析器和 JSDoc 插件。
- @u9g 与 @rzvxa 实现了控制流图分析。
- @branchseer 实现了多文件分析运行时。
- @camchenry 实现了嵌套配置支持。


