Skip to content

Oxlint 一般提供(GA)のお知らせ

この記事は Oxlint の最初の一般提供(GA)リリースを告知するものです。 機能と改善がさらに積み上がった最新の安定版については Oxlint v1.0 安定版のお知らせ を参照してください。

oxlint を一般提供できることを嬉しく思います。 このマイルストーンは、チームが課題に素早く対応・整理できる体制が整ったことの表れでもあります。

Oxlint は、JavaScript のリンターであり、既定では設定なしで誤りや無意味なコードを検出することを目指しています。

使い方

現段階では oxlint は ESLint の完全な置き換えを意図していません。ワークフローで ESLint の遅さがボトルネックになったときに足す強化、という位置づけです。

lint-staged や CI では、大規模コードベースでも数秒で終わることが多いので、ESLint の前に oxlint を走らせるとフィードバックが速くなります。

JavaScript / TypeScript のリポジトリルートで、次のいずれかを実行して試せます。

sh
$ npx oxlint@latest
sh
$ pnpm dlx oxlint@latest
sh
$ yarn dlx oxlint@latest
sh
$ bunx oxlint@latest
sh
$ deno run npm:oxlint@latest

詳細は インストールと使い方 を参照してください。

設計思想

ESLint のおよそ 50〜100 倍の速度

実運用では、Shopify が ESLint に 75 分かかっていた CI を 10 秒に短縮したと報告しています。

Preact の作者で Shopify DX の Jason Miller 氏:

oxlint は Shopify にとって大きな利益でした。以前の Lint セットアップは CI で 75 分かかっていたので、40 台以上のワーカーに分割していました。

同じコードベースを単一ワーカーで oxlint にかけるとおよそ 10 秒で、出力の読みやすさも上がりました。

移行のとき、昔の設定では隠れていた・スキップされていた不具合もいくつか見つかりました。

性能面の優位は、Rust と並列処理を核に、最初から速度を主眼に設計していることに起因します。

正しさを主眼にした Lint

oxlint の既定は、誤り・冗長・紛らわしいコードを見つけることです。perfsuspiciouspedanticstyle などの「うるさい」カテゴリは既定でオフにし、正しさを優先します。

使いやすさ

JavaScript / TypeScript プロジェクトの立ち上げはますます複雑になり、ツール同士の食い違いで何時間も溶かす、ということも珍しくありません。

そこで oxlint は基本ゼロ設定で動くようにし、Node.js すら必須にしません。調整は多くが CLI で行え、ESLint 設定ファイルの読み取りも進行中です。

改善された診断

リンターのメッセージは読みにくいことがあります。oxlint は原因箇所をはっきり指し示し、役に立つ文面にすることで、長いルールドキュメントを漁る時間を減らします。

vscode リポジトリoxlint -D perf を実行した例:

ルールの一本化

プラグイン機構はまだありませんが、TypeScript、React、Jest、Unicorn、JSX-a11y、Import など人気プラグインのルールを積極的に取り込んでいます。

エコシステムでのプラグインの重要性は理解しており、DSL ベースの方式も検討しています。

一方で、依存プラグインの一覧管理や 互換パッチバージョン制約でフォークせずにいられない といった負担から解放されるスタンドアロンのリンターにも価値がある、という考え方です。


よい Lint ライフを。よい休暇も。

はじめるには インストールと使い方、背景は Oxc プロジェクトの紹介、議論は Hacker News へ。