Skip to content

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 を開発依存関係としてインストールし、スクリプトを追加することです。

sh
pnpm add -D oxlint

package.json にスクリプトを追加します:

package.json
json
{
  "scripts": {
    "lint": "oxlint",
    "lint:fix": "oxlint --fix"
  }
}

次のステップ:

採用方法

TIP

ESLint からの移行をご検討の方は、「ESLint からの移行」ページをご覧ください。詳細なガイドが提供されています。

リポジトリの状況に合わせた方法を選択してください:

  • ESLint を置き換える(大多数のプロジェクトに推奨)。 Oxlint を主要なリンターとして使用します。
    • @oxlint/migrateGitHub)などのツールを使用して、既存の ESLint 設定を移行します。
  • 段階的に移行する(大規模リポジトリに推奨)。 Oxlint を最初に実行し、その後、重複するルールを無効化して ESLint も実行します。これにより、移行中に CI が高速に保たれます。
    • eslint-plugin-oxlintnpmx.dev)を使用して、両方を実行している間に重複する ESLint ルールを無効化します。
    • この方法でも、@oxlint/migrate を併用することをおすすめします。

Oxlint がサポートする内容

Oxlint は以下をサポートしています:

  • JavaScript および TypeScript(.js, .mjs, .cjs, .ts, .mts, .cts
  • JSX および TSX(.jsx, .tsx
  • フレームワークファイル(.vue, .svelte, .astro)は <script> ブロックのみをリンティング対象とする

機能

Oxlint を使っているプロジェクト

以下のような人気プロジェクトで本番環境で使用されています:

移行

参照