前端新玩具来了,速度快的惊人

2023年 12月 18日 80.0k 0

概念

Oxlint 是 OXC 工具集的其中一个工具,用于捕获错误或无用的代码,作用和 ESLint 类似。

OXC 是字节跳动出品的一个用 Rust 编写的 JavaScript 高性能工具集合,该项目的重点在于构建 JavaScript 的基本编译器工具:解析器、linter、格式化程序、转译器、压缩器和解析器。此外,OXC 还为 Rspack、Rolldown 和 Ezno 等新兴 JavaScript 工具提供支持。

现阶段,oxlint 无意完全取代 ESLint;当 ESLint 的缓慢成为工作流程中的瓶颈时,它可以作为增强功能。

系统要求:oxlint 专为 darwin-arm64、darwin-x64、linux-arm64、linux-x64、win32-arm64 和 win32-x64 构建。

Oxc Github:https://github.com/oxc-project/oxc。

特性

Oxlint 的特新如下:

  • 比 ESLint 快 50 - 100 倍,并随 CPU 核心数量不断扩展。
  • 超过 200 条规则,且正在不断增加,来自 eslint、typescript、eslint-plugin-react、eslint-plugin-jest、eslint-plugin-unicorn 和 eslint-plugin-jsx-a11y。
  • 支持.eslintignore。
  • 支持ESLint 注释禁用。

下面来详细看看这些特性。

比 ESLint 快 50-100 倍

在现实场景中,Shopify 报告称,他们的 75 CI 分钟 ESLint 运行现在只需 10 秒。大部分性能提升源于 Oxlint 专门针对性能而设计,利用 Rust 和并行处理作为关键因素。

检查正确性

Oxlint 默认识别错误、冗余或令人困惑的代码 ,优先考虑正确性而不是不必要的挑剔规则(分类为 perf、suspicious、pedantic 或 style),默认情况下禁用。

Oxlint 默认识别代码中的错误、冗余或令人困惑的部分。它的设计原则是优先考虑代码正确性,而不是过度挑剔的规则。Oxlint 将问题分类为 perf(性能)、suspicious(可疑)、pedantic(追求细节)或 style(风格),默认情况下这些规则是禁用的。

使用方便

Oxlint 的设计目标之一是提供零配置的开箱即用体验,以减少设置新的 JavaScript/TypeScript 代码库时可能遇到的兼容性问题。它甚至不需要 Node.js 环境来运行,并且可以从现有的 ESLint 配置文件中读取当前项目的配置,简化了调整和集成的过程。

增强诊断功能

理解代码检查工具的消息可能会很具有挑战性。Oxlint 的目标是通过准确定位根本原因并提供有用的提示来简化此过程,从而消除了阅读冗长规则文档的需求,节省时间。

在 VSCode代码库中运行 oxlint -D perf:

合并规则

Oxlint 当前尚未提供插件系统,但团队正在积极整合来自流行插件(例如 TypeScript、React、Jest、Unicorn、JSX-a11y和Import)的规则。

Oxc 团队深知在 JavaScript 生态系统中插件的重要性,并且正在研究基于DSL的插件系统。

不过,用户也可能会喜欢一个独立的代码检查工具,它无需管理插件依赖列表,避免兼容性问题,或因版本限制而使用分叉插件。

使用

直接在存储库的根目录运行 oxlint:

npx oxlint@latest

可以通过以下命令来获取规则列表:

npx oxlint@latest --rules

可以通过以下命令来获取配置说明:

npx oxlint@latest --help

Oxc 提供了 VS Code 插件供开发者使用:

插件下载:https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode。

效果

那在真实应用中的效果怎么样呢,下面来看看一些体验反馈。

Vue.js 的作者尤雨溪表示,在对 Vue 3 的代码库进行测试时,测试了约 200 条规则 + 约 590 个文件,在 50 毫秒内就完成了,再次运行仅用了 30 毫秒。

Moonrepo 的创建者表示,oxlint(和 oxc 工具)真是太疯狂了。不仅在性能上,而且在操控性上。依靠 Rust 是一个不错的选择!

Preact 的作者表示,oxlint 对 Shopify 来说是一个巨大的胜利,之前的 linting 需要 75 分钟才能运行,因此将其分散到 CI 中的 40 多个 worker 中。相比之下,oxlint 在单个 worker 上检查相同的代码库大约需要 10 秒,并且输出更容易解释。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论