Oxlint v1.0 Stable
INFO
このブログ記事は 元々 VoidZero のウェブサイトで公開されました。
TL;DR: Oxlint の最初の安定版がリリースされました!ESLint と比べて 50~100倍 のパフォーマンス向上、500以上の ESLint ルールをサポートし、大手企業での利用実績として、Shopify、Airbnb、Mercedes-Benz などでも採用されています。ぜひ試してみてください。すぐに始めよう。
Oxlint は、JavaScript および TypeScript 用の高速で導入が簡単な Rust 駆動型ランターです。2023年12月の初発表以来、大幅な改善が加えられ、ついに最初の安定版である 1.0 をリリースしました。
安定版リリースに加えて、現在、Cameron 氏が Oxlint の専任フルタイムメンテナーとなり、ランターの維持・改善を進める成長中のコアチームも結集しています。
実世界への影響
私たちにとって、Oxlint のパフォーマンスと大規模なコードベースにおける実際の影響は非常に誇り高い成果です。これにより、CI のコスト削減が実現されています。
私たちの 5,200人以上の早期導入者 と、以下のような企業やプロジェクトに感謝します:
- Shopify:フロントエンドプラットフォームチームが、Shopify 管理コンソールで Oxlint を使用。
- Airbnb:126,000ファイル以上を持つコードベースにおいて、マルチファイル分析 oxc/no-barrel-file と import/no-cycle を使用。CI 上では7秒で完了。ESLint の実装ではタイムアウトする。
- Mercedes-Benz:ESLint から Oxlint に切り替えたところ、ルーチンのラインタイムが最大71%減少。一部のプロジェクトでは97%のスピードアップを達成。
- 大規模なオープンソースプロジェクト:ランタイムとして Bun やフレームワークとして Preact などの利用。
調査対象となった最大のリポジトリにおいて、以下の結果が得られました:
264,925 ファイル、101 ルール、10 スレッドで 22.5 秒で完了。X および Bluesky に投稿された実世界の事例に基づき、スレッド数によって異なりますが、約1秒あたり1万ファイルの処理速度で動作しています。
クイックスタート
開発者にとって、ツールの設定に何時間も費やすことなく、すぐにコードのチェックを開始できるのは Oxlint の特徴です。設定不要で即座に問題を検出できます。
設定なしですぐ実行。
$ npx oxlint@latest$ pnpm dlx oxlint@latest$ yarn dlx oxlint@latest$ bunx oxlint@latest$ deno run npm:oxlint@latest設定や構成は必要ありませんが、.oxlintrc.json ファイルによるカスタマイズが可能です。これは大規模プロジェクトやより高度なカスタマイズが必要な場合に有用です。
この構成形式は、ESLint v8 のフラット構成に基づいており、移行が簡単で馴染みやすいです。各ソースファイルは、最も近い適用可能な構成でチェックされ、特定のグロブパターンをターゲットにするためのオーバーライドも利用可能。また、共有構成を拡張することでチーム間の一貫性を保つこともできます。
既に ESLint を使用しているプロジェクトには、oxlint-migrate を使って既存の ESLint フラット構成ファイルを Oxlint に移行できます。さらに、両方のランターを併用する際には eslint-plugin-oxlint を使って重複する ESLint ルールを無効化できます。
推奨される運用方法は oxlint && eslint を実行することで、Oxlint の高速なフィードバックサイクルの恩恵を受けられる点です。
詳しくは、インストールガイド を参照してください。
バージョン管理
ライブラリが実行時コードを含むのとは異なり、ランターは返す診断(diagnostics)のみが変更されます。Oxlint はセマンティックバージョニングに準拠しています:
- パッチリリース:バグ修正のみ。
- マイナーリリース:設定変更なしでルールカバレッジおよび診断機能の拡張。
- メジャーリリース:CLI または構成の変更があり、移行が必要になる可能性あり。 なお、マイナーリリースでも新しく追加されたルールが以前隠れていた問題を発見する可能性があるため、CI が破損するケースも発生します。詳細は バージョン管理ガイド を参照してください。
主な特徴
継続的なルールカバレッジ
さまざまなソースからの500以上のルールを内包しています:
- 完全な ESLint ルールセット(
typescript-eslintのタイプチェック対象以外のタイプ固有ルールを含む) eslint-plugin-unicorn、eslint-plugin-jsdoc、eslint-plugin-react、eslint-plugin-react-hooks、eslint-plugin-jest、eslint-plugin-importからの人気プラグインルール- Oxlint独自のルール:誤った比較シーケンス、定数比較、再帰でのみ使用される
柔軟な構成
.oxlintrc.json ファイルを通じて構成でき、以下の機能をサポート:
- 特定ディレクトリに適用されるネストされた構成
- 特定のファイルタイプや場所をターゲットにするオーバーライドパターン
- チームの一貫性を保つための共有構成の拡張
エディタ統合
次のエディタに対応するファーストクラスのサポート:
- VS Code
- IntelliJ IDEA および WebStorm
- Zed Editor
- 他のエディタ向け言語サーバープロトコルサポート
有益な診断メッセージ
Oxlint は、単なる問題の説明だけでなく、視覚的に問題を可視化し、解決方法を提案する明確で行動可能なエラーメッセージを提供するように設計されています。
Oxlint が詳細なエラー報告とともにターミナル上で実行されている様子
ベンチマーク
当社の ベンチマーク によると、同じ設定下で Oxlint は ESLint と比べて約50~100倍速いです。
| ツール | 時間 |
|---|---|
| oxlint (マルチスレッド) | 615.3 ミリ秒 |
| oxlint (シングルスレッド) | 1.840 秒 |
| eslint | 33.481 秒 |
開発ロードマップ
Oxlint 1.0 はあくまで始まりにすぎません!安定版ではありますが、今後リリース予定の重要な機能・改善点も多数あります:
カスタムルール – 近日中に JavaScript プラグインサポートが登場予定。チームが自前のルールを、Oxlint のアーキテクチャにシームレスに統合できるようになります。
パフォーマンス最適化 – パースおよび解析速度の継続的な改善。
細粒度(グロブごとの)構成 – ESLint v9 の構成形式。
謝辞
Oxlint 1.0 は、200名以上の貢献者 の共同作業の成果です。バグ報告、機能要望、コード寄与のすべてに感謝します。
特に以下の人物に特別な感謝を申し上げます:
- @branchseer:マルチファイル分析ランタイムの実装。
- @camc314、@mysteryven、@shulaoda:多くの高度なラントルール、テスト、そして常に品質の向上に貢献。
- @camchenry:ネスト構成のサポート実装。
- @DonIsaac:構成、ドキュメント、ウェブサイトの改善、および SquiggleConf 2024 での Oxc の代表者としての活動。
- @leaysgur:正規表現パーサーおよび JSDoc プラグインの実装。
- @Sysix:
eslint-plugin-oxlintのメンテナンスおよび言語サーバーと VSCode 拡張への大幅な貢献。 - @u9g および @rzvxa:制御フローグラフ解析の実装。
コミュニティに参加しよう
私たちには、あなたが Oxlint についてのフィードバックをいただけることを心待ちにしています。あなたの開発ワークフローの改善に役立つことを楽しみにしています。以下から連携しましょう:
- Discord:リアルタイムの議論ができる コミュニティサーバー に参加
- GitHub:GitHub Discussions でフィードバックを共有
- イシュートラッカー:バグの報告や機能要請は イシュートラッカー へ
あなたのフィードバックが、Oxlint の進化を牽引します。
さっそく試してみよう
始めるには、インストールガイド に従ってください、または Oxc プロジェクト の詳細を学びましょう。


