3月17日、JavaScriptツールチェーンをRustベースで置き換えることを目指すプロジェクトOxcが、Eslintの置き換えを目指す「Oxlint」のベータ版をリリースした。
以下に、その内容を紹介する。
Oxcとは何か
Oxcは「JavaScript Oxidation Compiler」の略称であり、Rustで記述された高性能なJavaScript向け開発ツール群の総称である。JavaScriptに不可欠とされるコンパイラツール(パーサー、リンター、フォーマッタ、トランスパイラ、ミニファイア、リゾルバ)を構築することを目的として開発が進められている。プロジェクトの目標は、VoidZeroの一環としてJavaScript用の次世代ツールチェーンを強化することであり、言語解析やコード変換などの高負荷処理をRustのパフォーマンスを活かして効率的に行うことが可能だ。
Oxcはオープンソースで開発されており、多数のコントリビューターによるコミュニティ主導のコラボレーションを通じて進化を続けている。既存のJavaScriptツールチェーンとの親和性を保ちつつも、高速化や拡張性の向上を実現する点が特徴である。
Oxlintとは何か
Oxcプロジェクトに含まれる各種ツールの中でも、OxlintはJavaScriptやTypeScriptのコード品質を向上させるために設計されたリンターである。従来のリンター(例えばESLint)と同様、構文エラーやコードスタイルの乱れ、潜在的なバグを検出し、開発者に修正を促す役割を担う。Oxlintが注目を集めている理由は、Rustベースの高パフォーマンスを発揮するだけでなく、多様なルールやプラグインを標準でサポートし、コードメンテナンスを効率化する仕組みを提供している点にある。
約1年にわたる開発を経てベータ版がリリースされ、機能の充実度やパフォーマンス、安定性などが大幅に向上している。
現時点でOxlintは、中小規模のプロジェクトにおいてESLintを完全に置き換えることが可能である。大規模なプロジェクトでは、eslint-plugin-oxlintを利用し、ESLintのルールを無効化してOxlintを先行して実行する運用が推奨されている。これにより高速なフィードバックループを構築できる。
Oxlintを導入する際は、任意のパッケージマネージャを使用してプロジェクトのルートディレクトリでOxlintをインストールし、実行すればよい。エディタとの連携方法やより詳しい設定方法については、インストールガイドに詳しく記載されている。
ベータ版で追加された主な新機能
以下は、ベータ版で強化された機能の一部である。
- 大幅なパフォーマンス改善(前リリース比で最大50%高速化)
- 500を超えるルールを標準搭載(追加インストール不要)
typescript
、unicorn
、react
、react-perf
、nextjs
、import
、jsdoc
、jsx-a11y
、node
、promise
、jest
、vitest
などのプラグイン由来の多数のルールが完成- .oxlintrc.json形式での設定に対応(ネストした設定ファイル、
extends
、overrides
など柔軟な設定が可能) .astro
、.svelte
、.vue
ファイルの<script>
ブロックを追加設定なしでリンティング可能- 自動修正やサジェスチョン適用機能を提供
OxlintはESLintのルールや主要プラグインを広範にサポートすると同時に、以前よりも大幅な高速化を実現している。以下のベンチマーク結果は、著名なリポジトリでOxlintのベータ版をテストした際の例である。
Repository | File count | Lint time (GA) | Lint time (beta) | Speedup |
---|---|---|---|---|
elastic/kibana | 68,591 | 6.02s | 3.11s | 48% faster |
microsoft/vscode | 5,703 | 1.697s | 0.792s | 53% faster |
vitest-dev/vitest | 1,732 | 105ms | 50ms | 52% faster |
vuejs/core | 1,063 | 217ms | 89ms | 59% faster |
今後のロードマップ
コミュニティから強く要望されている、ESLint用カスタムプラグインのサポートについては、次のメジャーリリースでの提供を目指している。
また、VSCode、Zed、coc.nvim
、IntelliJプラグインなど、各種IDE・エディタとの連携を強化する計画も進行中である。
詳細はThe JavaScript Oxidation Compilerを参照していただきたい。