Oxlint vs ESLint: CIにはどちらのJS linterか
Oxlint(Oxcプロジェクト由来)はESLintより桁違いに速く動作するRustベースのlinterで、ESLintは完全なルールとプラグインのエコシステムを保ちます。
ESLintは最大のルールとプラグインのセットを持つ標準的なJavaScript/TypeScriptのlinterです。OxlintはRustベースの速度重視のlinterで、ほぼゼロ設定で多くの一般的なルールをカバーし、時間とともにカバレッジを改善しています。
| Oxlint | ESLint | |
|---|---|---|
| 実装 | Rust | JavaScript |
| 速度 | 極めて高速 | より遅い |
| ルールカバレッジ | 多くの一般的なルール、成長中 | 完全、最大 |
| プラグインエコシステム | 限定的、成長中 | 最大 |
| 設定 | ほぼゼロ | 柔軟 |
CIでは
OxlintはESLintのごく一部の時間で巨大なコードベースをlintできるため、高速な第一段階のgateとして魅力的です。まだESLintのすべてのルールやプラグインをカバーしていないため、多くのチームは速度のためにOxlintを実行し、Oxlintに欠けているルールのためにESLintを残します - しばしばpushごとにOxlint、より完全なESLintパスをより低頻度で実行します。カスタムまたはframework固有のプラグインに依存する場合、ESLintは依然として不可欠です。
両者を併用する
Oxlintを高速な事前チェックとして、ESLintをそれがカバーしないルールのために実行します。lintはCPUバウンドなので特別なcacheは不要です。どちらもmanaged runnerで動作し、高速なmanaged runnerは大きなリポジトリでのESLintパスを短縮します。
結論
超高速なlintパスが欲しく、重要なルールがカバーされているなら: Oxlint(多くの場合ESLintと併用)。完全なルールとプラグインのエコシステムが必要なら: ESLint。多くのチームは両者を組み合わせます - 速度のためのOxlint、カバレッジのためのESLintです。