Oxlint
Oxlint (/oʊ-ɛks-lɪnt/) は、Oxc コンパイラスタックに基づいて構築された、JavaScript および TypeScript 向けの高パフォーマンスなリンターです。
スケーラビリティに最適化
Oxlint は大規模リポジトリや CI 環境向けに設計されています。ESLint における性能を制限する構造的ボトルネックを排除しています。
私たちの ベンチマーク では、Oxlint が ESLint より 50〜100 倍速いことが示されています。
正確性重視のデフォルト設定
Oxlint は即時使用可能で、デフォルトでは高精度な正しさチェックを優先します。これらのチェックにより、不正なコード、安全ではないコード、無意味なコードが浮き彫りになります。これにより、チームは過度なノイズなく Oxlint を採用できます。
要件が進化するにつれて、追加ルールを段階的に有効化できます。
大規模かつ拡張中のルールセット
Oxlint は 690 以上のルール を内包しており、多くのチームが既に利用しているプラグインに対応しています。主な対象は以下の通りです:
- ESLint コアルール
- TypeScript ルール
- React、Jest、Unicorn、jsx-a11y などの人気プラグイン
- ESLint プラグインエコシステムと互換性のあるカスタム JS プラグイン
この広範なカバー範囲により、ルールカバレッジを損なうことなく移行が容易になります。
タイプに準拠したリンティング
Oxlint はネイティブの Go 記述の TypeScript コンパイラ (tsgo,別名 TypeScript 7) を活用し、完全な TypeScript 対応と、タイプシステムの挙動を TypeScript そのものと同様に実現しています。
これにより、型が必要なミッションクリティカルなチェック(たとえば、浮遊プロミスの検出)が可能になります。
一方、Biome のアプローチ は、TypeScript コンパイラに依存せず独自の型推論を実装するものであり、彼ら自身もカバレッジの向上がまだ進行中であると述べています。
複数ファイル解析
Oxlint は複数ファイル解析を最初からサポートする機能として搭載しています。
有効化すると、Oxlint はプロジェクト全体のモジュールグラフを構築し、ルール間でパースと解決を共有します。これにより、跨ファイルのインポートに依存するチェックの品質が向上し、ESLint でよく見られる import/no-cycle といったルールのパフォーマンスの急降下を回避できます。
参照:複数ファイル解析
AI 友好な診断情報
Oxlint の診断情報は、人間にも読みやすく、機械にも処理可能なように設計されています。
明確なメッセージに加え、正確なスパン情報や文脈データといった構造化された情報も含まれており、AI が問題を理解し、信頼性の高い修正を適用できるように支援します。
安定性を最優先
失敗が許されないワークフローを想定して設計されています。
クラッシュは最高優先度のバグとみなされます。 パフォーマンスの低下はバグとみなされます。
特に CI 環境や大規模なモノレポにおいて、安定性とスループットが常に最優先されます。
使い始め
推奨される設定は、Oxlint を開発依存関係としてインストールし、スクリプトを追加することです。
pnpm add -D oxlintpackage.json にスクリプトを追加します:
{
"scripts": {
"lint": "oxlint",
"lint:fix": "oxlint --fix"
}
}次のステップ:
採用方法
TIP
ESLint からの移行をご検討の方は、「ESLint からの移行」ページをご覧ください。詳細なガイドが提供されています。
リポジトリの状況に合わせた方法を選択してください:
- ESLint を置き換える(大多数のプロジェクトに推奨)。 Oxlint を主要なリンターとして使用します。
@oxlint/migrate(GitHub)などのツールを使用して、既存の ESLint 設定を移行します。
- 段階的に移行する(大規模リポジトリに推奨)。 Oxlint を最初に実行し、その後、重複するルールを無効化して ESLint も実行します。これにより、移行中に CI が高速に保たれます。
eslint-plugin-oxlint(npmx.dev)を使用して、両方を実行している間に重複する ESLint ルールを無効化します。- この方法でも、
@oxlint/migrateを併用することをおすすめします。
Oxlint がサポートする内容
Oxlint は以下をサポートしています:
- JavaScript および TypeScript(
.js,.mjs,.cjs,.ts,.mts,.cts) - JSX および TSX(
.jsx,.tsx) - フレームワークファイル(
.vue,.svelte,.astro)は<script>ブロックのみをリンティング対象とする
機能
- ネイティブプラグイン:695 個の組み込みルールによる幅広いルールカバレッジを実現。大きな JavaScript 依存関係ツリーを必要としません。
- 自動修正:安全な変更を迅速に適用。
- 無視ファイル:どのパスをリンティング対象にするかを制御。
- インライン無視コメント:ファイル内で特定のルールを無視する。
- 複数ファイル解析:インポート解析(例:no-cycle)など、プロジェクト全体のコンテキストが必要なルールに適しています。
- タイプに準拠したリンティング:TypeScript の型情報が必要なルールに適しています。
- JS プラグイン(実験的):既存の ESLint プラグインとの互換性を提供。
Oxlint を使っているプロジェクト
以下のような人気プロジェクトで本番環境で使用されています:
