プロジェクトの理念
軽量で拡張可能なコア
Vite はすべてのユーザーのすべてのユースケースをカバーするつもりはありません。Vite は Web アプリをすぐに構築するための最も一般的なパターンをサポートすることを目指していますが、プロジェクトの長期的なメンテナンスを維持するために、Vite コアは小さな API サーフェスを持つ軽量なままでなければなりません。この目標は、Vite の Rollup ベースのプラグインシステムのおかげで達成可能です。外部プラグインとして実装できる機能は、一般的に Vite コアには追加されません。vite-plugin-pwa は Vite コアの外部で何が達成できるかの素晴らしい例であり、ニーズをカバーするために多くの手入れの行き届いたプラグインがあります。Vite は Rollup プロジェクトと密接に連携し、プラグインが可能な限りプレーンな Rollup と Vite の両方のプロジェクトで使用できるように、必要な拡張機能を可能であれば Plugin API の上流にプッシュしようとしています。
モダン Web の推進
Vite は、モダンなコードの記述を推進する、特定の意見を持った機能を提供します。例えば
- ソースコードは ESM でのみ記述でき、ESM ではない依存関係は動作させるためにESM として事前にバンドルする必要があります。
- Web Worker は、モダンな標準に従うために
new Worker構文で記述することを推奨しています。 - Node.js モジュールはブラウザでは使用できません。
新しい機能を追加する際には、これらのパターンに従って将来にわたって利用可能な API を作成します。これは、他のビルドツールと常に互換性があるとは限りません。
パフォーマンスへの実用的なアプローチ
Vite はその起源からパフォーマンスに重点を置いてきました。その開発サーバーアーキテクチャは、プロジェクトがスケールしても高速な HMR を可能にします。Vite は、集中的なタスクを実装するために esbuild や SWC のようなネイティブツールを使用しますが、速度と柔軟性のバランスを取るために残りのコードは JS で記述します。必要に応じて、フレームワークプラグインはユーザーコードをコンパイルするために Babel を利用します。そしてビルド時には、バンドルサイズと幅広いプラグインエコシステムへのアクセスが生の速度よりも重要であるため、Vite は現在 Rollup を使用しています。Vite は内部的に進化し続け、新しいライブラリが登場するたびにそれらを使用して DX を改善しながら、API の安定性を保ちます。
Vite の上にフレームワークを構築する
Vite はユーザーが直接使用することもできますが、フレームワークを作成するためのツールとして輝きを放ちます。Vite コアはフレームワークに依存しませんが、各 UI フレームワーク用に洗練されたプラグインがあります。そのJS APIにより、App フレームワークの作者は Vite の機能を使用して、ユーザー向けのカスタマイズされた体験を作成できます。Vite は、通常はより高レベルのツールに存在するが、モダンな Web フレームワークを構築するために不可欠なSSR プリミティブのサポートを含んでいます。そして Vite プラグインは、フレームワーク間で共有する方法を提供することで全体像を完成させます。Vite は、Ruby や Laravel のようなバックエンドフレームワークと組み合わせた場合にも最適です。
活発なエコシステム
Vite の進化は、フレームワークとプラグインのメンテナー、ユーザー、そして Vite チームの協力によるものです。プロジェクトが Vite を採用したら、Vite のコア開発への積極的な参加を奨励します。私たちは、vite-ecosystem-ci のようなツールを活用し、各リリースでのリグレッションを最小限に抑えるために、エコシステム内の主要なプロジェクトと密接に連携しています。これにより、選択された PR に対して Vite を使用する主要なプロジェクトの CI を実行し、エコシステムがリリースにどのように反応するかを明確なステータスで把握できます。私たちは、リグレッションがユーザーに影響を与える前に修正し、プロジェクトがリリース後すぐに次のバージョンに更新できるように努めています。Vite を使用している場合は、Vite の Discord に参加し、プロジェクトに関わることをお勧めします。