前端新玩具來了,速度快的驚人

概念
Oxlint 是 OXC 工具集的其中一個(gè)工具,用于捕獲錯(cuò)誤或無用的代碼,作用和 ESLint 類似。
OXC 是字節(jié)跳動(dòng)出品的一個(gè)用 Rust 編寫的 JavaScript 高性能工具集合,該項(xiàng)目的重點(diǎn)在于構(gòu)建 JavaScript 的基本編譯器工具:解析器、linter、格式化程序、轉(zhuǎn)譯器、壓縮器和解析器。此外,OXC 還為 Rspack、Rolldown 和 Ezno 等新興 JavaScript 工具提供支持。

現(xiàn)階段,oxlint 無意完全取代 ESLint;當(dāng) ESLint 的緩慢成為工作流程中的瓶頸時(shí),它可以作為增強(qiáng)功能。
系統(tǒng)要求:oxlint 專為 darwin-arm64、darwin-x64、linux-arm64、linux-x64、win32-arm64 和 win32-x64 構(gòu)建。
Oxc Github:https://github.com/oxc-project/oxc。
特性
Oxlint 的特新如下:
- 比 ESLint 快 50 - 100 倍,并隨 CPU 核心數(shù)量不斷擴(kuò)展。
- 超過 200 條規(guī)則,且正在不斷增加,來自 eslint、typescript、eslint-plugin-react、eslint-plugin-jest、eslint-plugin-unicorn 和 eslint-plugin-jsx-a11y。
- 支持.eslintignore。
- 支持ESLint 注釋禁用。
下面來詳細(xì)看看這些特性。
比 ESLint 快 50-100 倍
在現(xiàn)實(shí)場景中,Shopify 報(bào)告稱,他們的 75 CI 分鐘 ESLint 運(yùn)行現(xiàn)在只需 10 秒。大部分性能提升源于 Oxlint 專門針對性能而設(shè)計(jì),利用 Rust 和并行處理作為關(guān)鍵因素。
檢查正確性
Oxlint 默認(rèn)識別錯(cuò)誤、冗余或令人困惑的代碼 ,優(yōu)先考慮正確性而不是不必要的挑剔規(guī)則(分類為 perf、suspicious、pedantic 或 style),默認(rèn)情況下禁用。
Oxlint 默認(rèn)識別代碼中的錯(cuò)誤、冗余或令人困惑的部分。它的設(shè)計(jì)原則是優(yōu)先考慮代碼正確性,而不是過度挑剔的規(guī)則。Oxlint 將問題分類為 perf(性能)、suspicious(可疑)、pedantic(追求細(xì)節(jié))或 style(風(fēng)格),默認(rèn)情況下這些規(guī)則是禁用的。
使用方便
Oxlint 的設(shè)計(jì)目標(biāo)之一是提供零配置的開箱即用體驗(yàn),以減少設(shè)置新的 JavaScript/TypeScript 代碼庫時(shí)可能遇到的兼容性問題。它甚至不需要 Node.js 環(huán)境來運(yùn)行,并且可以從現(xiàn)有的 ESLint 配置文件中讀取當(dāng)前項(xiàng)目的配置,簡化了調(diào)整和集成的過程。
增強(qiáng)診斷功能
理解代碼檢查工具的消息可能會(huì)很具有挑戰(zhàn)性。Oxlint 的目標(biāo)是通過準(zhǔn)確定位根本原因并提供有用的提示來簡化此過程,從而消除了閱讀冗長規(guī)則文檔的需求,節(jié)省時(shí)間。
在 VSCode代碼庫中運(yùn)行 oxlint -D perf:

合并規(guī)則
Oxlint 當(dāng)前尚未提供插件系統(tǒng),但團(tuán)隊(duì)正在積極整合來自流行插件(例如 TypeScript、React、Jest、Unicorn、JSX-a11y和Import)的規(guī)則。
Oxc 團(tuán)隊(duì)深知在 JavaScript 生態(tài)系統(tǒng)中插件的重要性,并且正在研究基于DSL的插件系統(tǒng)。
不過,用戶也可能會(huì)喜歡一個(gè)獨(dú)立的代碼檢查工具,它無需管理插件依賴列表,避免兼容性問題,或因版本限制而使用分叉插件。
使用
直接在存儲(chǔ)庫的根目錄運(yùn)行 oxlint:
npx oxlint@latest可以通過以下命令來獲取規(guī)則列表:
npx oxlint@latest --rules可以通過以下命令來獲取配置說明:
npx oxlint@latest --helpOxc 提供了 VS Code 插件供開發(fā)者使用:

插件下載:https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode。
效果
那在真實(shí)應(yīng)用中的效果怎么樣呢,下面來看看一些體驗(yàn)反饋。
Vue.js 的作者尤雨溪表示,在對 Vue 3 的代碼庫進(jìn)行測試時(shí),測試了約 200 條規(guī)則 + 約 590 個(gè)文件,在 50 毫秒內(nèi)就完成了,再次運(yùn)行僅用了 30 毫秒。

Moonrepo 的創(chuàng)建者表示,oxlint(和 oxc 工具)真是太瘋狂了。不僅在性能上,而且在操控性上。依靠 Rust 是一個(gè)不錯(cuò)的選擇!

Preact 的作者表示,oxlint 對 Shopify 來說是一個(gè)巨大的勝利,之前的 linting 需要 75 分鐘才能運(yùn)行,因此將其分散到 CI 中的 40 多個(gè) worker 中。相比之下,oxlint 在單個(gè) worker 上檢查相同的代碼庫大約需要 10 秒,并且輸出更容易解釋。
























