Oxlint 一般提供(GA)のお知らせ
この記事は Oxlint の最初の一般提供(GA)リリースを告知するものです。 機能と改善がさらに積み上がった最新の安定版については Oxlint v1.0 安定版のお知らせ を参照してください。
oxlint を一般提供できることを嬉しく思います。 このマイルストーンは、チームが課題に素早く対応・整理できる体制が整ったことの表れでもあります。
Oxlint は、JavaScript のリンターであり、既定では設定なしで誤りや無意味なコードを検出することを目指しています。
使い方
現段階では oxlint は ESLint の完全な置き換えを意図していません。ワークフローで ESLint の遅さがボトルネックになったときに足す強化、という位置づけです。
lint-staged や CI では、大規模コードベースでも数秒で終わることが多いので、ESLint の前に oxlint を走らせるとフィードバックが速くなります。
JavaScript / TypeScript のリポジトリルートで、次のいずれかを実行して試せます。
$ npx oxlint@latest$ pnpm dlx oxlint@latest$ yarn dlx oxlint@latest$ bunx oxlint@latest$ 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 の既定は、誤り・冗長・紛らわしいコードを見つけることです。perf、suspicious、pedantic、style などの「うるさい」カテゴリは既定でオフにし、正しさを優先します。
使いやすさ
JavaScript / TypeScript プロジェクトの立ち上げはますます複雑になり、ツール同士の食い違いで何時間も溶かす、ということも珍しくありません。
そこで oxlint は基本ゼロ設定で動くようにし、Node.js すら必須にしません。調整は多くが CLI で行え、ESLint 設定ファイルの読み取りも進行中です。
改善された診断
リンターのメッセージは読みにくいことがあります。oxlint は原因箇所をはっきり指し示し、役に立つ文面にすることで、長いルールドキュメントを漁る時間を減らします。
vscode リポジトリで oxlint -D perf を実行した例:
ルールの一本化
プラグイン機構はまだありませんが、TypeScript、React、Jest、Unicorn、JSX-a11y、Import など人気プラグインのルールを積極的に取り込んでいます。
エコシステムでのプラグインの重要性は理解しており、DSL ベースの方式も検討しています。
一方で、依存プラグインの一覧管理や 互換パッチ、バージョン制約でフォークせずにいられない といった負担から解放されるスタンドアロンのリンターにも価値がある、という考え方です。
よい Lint ライフを。よい休暇も。
はじめるには インストールと使い方、背景は Oxc プロジェクトの紹介、議論は Hacker News へ。
