Skip to content

Oxlint Beta

本記事では、Oxlint のベータリリースを発表します。 その後、Oxlint はバージョン 1.0 ステーブルに到達しました! 最新の機能や改善点については、Oxlint v1.0 プレリリースのお知らせ をご確認ください。

コミュニティによる1年以上にわたる開発を経て、私たちは非常に喜ばしく、Oxlint のベータリリースを発表できることを心から嬉しく思います!

この節目は、機能の完成度、パフォーマンス、安定性において重要な前進を象徴しています。

使い方

現時点では、小さなプロジェクトから中規模のプロジェクトまで、完全に ESLint に置き換えることができます。

大規模なプロジェクトの場合、eslint-plugin-oxlint を通じて ESLint ルールを無効化し、ローカル環境または CI 環境で Oxlint を ESLint より先に実行することで、より迅速なフィードバックループを実現できます。

コードベースで Oxlint をテストするには、コードベースのルートディレクトリで任意のパッケージマネージャーを使用してください:

sh
$ npx oxlint@latest
sh
$ pnpm dlx oxlint@latest
sh
$ yarn dlx oxlint@latest
sh
$ bunx oxlint@latest
sh
$ deno run npm:oxlint@latest

Oxlint の使い方やプロジェクト・エディタとの統合方法について詳しく知りたい場合は、インストールガイド をご参照ください。

一般公開以降の新機能のハイライト

  • 前回リリースと比べ最大2倍の高速化という大幅なパフォーマンス向上
  • 500以上ものルールが内蔵済みで、追加インストール不要
  • typescriptunicornreactreact-perfnextjsimportjsdocjsx-a11ynodepromisejestvitest プラグインからの多くのルールが完了
  • .oxlintrc.json ファイルによる設定サポート(ネストされた設定ファイルextends を用いた設定の共有、特定ファイルへのoverrides適用なども可能)
  • .astro.svelte.vue ファイル内の <script> 内容に対して、追加設定なしでレンチングを実行可能
  • ファイルに対する自動修正および提案の適用を可能に

より多くのルール、より高いパフォーマンス

多くの一般的に使用される ESLint ルールやプラグインをサポートするように、機能の充実を重視してきましたが、同時に、より高速な Oxlint の実現にも注力しています。

初めての一般公開 (GA) リリースでは、合計205のルールがあり、そのうち70がデフォルトで有効化されていました。今回のベータリリースでは、合計502のルールが含まれており、そのうち99がデフォルトで有効化(デフォルト有効ルール数が41%増加)されています。

ルール種別ルール数 (GA)ルール数 (beta)増加率
デフォルトルール7099+29 ルール
正しさ88173+88 ルール
パフォーマンス09+9 ルール
制限1564+49 ルール
極端な厳しさ4379+36 ルール
スタイル38137+99 ルール
警戒すべき内容728+21 ルール
合計ルール205502+297 ルール

デフォルトで有効化されているルールを多数追加したにもかかわらず、現在の Oxlint はこれまでになく高速です。いくつかの人気リポジトリでのベンチマーク結果をご覧ください:

リポジトリファイル数ライティング時間 (GA)ライティング時間 (beta)速度向上
elastic/kibana68,5916.02s3.11s1.94x
microsoft/vscode5,7031.697s0.792s2.14x
vitest-dev/vitest1,732105ms50ms2.1x
vuejs/core1,063217ms89ms2.44x

道のり

ユーザーから最も頻繁に要望されていた機能の一つが、既存のカスタム ESLint プラグインのサポートです。この機能の前提となる作業に精力的に取り組んできており、JavaScript で書かれた高速なライター・プラグインを可能にする仕組みを整備しています。次の大規模リリースでこの機能を提供できるよう願っており、近いうちに詳細情報を共有する予定です。

また、エディタ連携のさらなる改善も計画しており、VSCode、Zed、coc.nvim、IntelliJ プラグインへのサポートを強化していきます。

謝辞

200人を超える貢献者の方々がいないと、今回の Oxlint ベータ版の実現は不可能でした。

特に感謝したい方々:

  • @cam314@mysteryven@shulaoda:多くの高度なルールの実装、テスト、継続的な改善に貢献。
  • @Sysixeslint-plugin-oxlint のメンテナンス。
  • @DonIsaac:設定、ドキュメント、ウェブサイトの改善、および SquiggleConf 2024 における Oxc の代表。
  • @leaysgur:正規表現パーサーと JSDoc プラグインの実装。
  • @u9g および @rzvxa:制御フロー図分析の実装。
  • @branchseer:マルチファイル解析ランタイムの実装。
  • @camchenry:ネストされた設定サポートの実装。