From 3a33c6228ae3e5b4a1549fc26b79c86da4a8f431 Mon Sep 17 00:00:00 2001 From: Jun Shindo <46585162+jay-es@users.noreply.github.com> Date: Sat, 22 Mar 2025 00:43:58 +0900 Subject: [PATCH] docs: add rolldown chapter --- .vitepress/config.ts | 4 ++ guide/performance.md | 1 + guide/rolldown.md | 93 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 guide/rolldown.md diff --git a/.vitepress/config.ts b/.vitepress/config.ts index fee10918..f8d710f1 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -306,6 +306,10 @@ export default defineConfig({ text: 'パフォーマンス', link: '/guide/performance', }, + { + text: 'Rolldown', + link: '/guide/rolldown', + }, { text: 'v5 からの移行', link: '/guide/migration', diff --git a/guide/performance.md b/guide/performance.md index 5c6766ba..cd40caa8 100644 --- a/guide/performance.md +++ b/guide/performance.md @@ -122,5 +122,6 @@ export default defineConfig({ ネイティブツールを使用すると、インストールサイズが大きくなることが多いため、新しい Vite プロジェクトを開始する際のデフォルトではありません。しかし、大規模なアプリケーションではコストをかける価値があるかもしれません。 +- より高速なビルドと開発/ビルド間の一貫した体験のために、[Rollup と esbuild の代わりに Rolldown](./rolldown) を使用する。 - [LightningCSS](https://github.com/vitejs/vite/discussions/13835) の実験的サポートを試す。 - `vitejs/plugin-react` の代わりに [`@vitejs/plugin-react-swc`](https://github.com/vitejs/vite-plugin-react-swc) を使用する。 diff --git a/guide/rolldown.md b/guide/rolldown.md new file mode 100644 index 00000000..75a8d2f9 --- /dev/null +++ b/guide/rolldown.md @@ -0,0 +1,93 @@ +# Rolldown の統合 + +Vite は、ビルドのパフォーマンスと機能を向上させるために、Rust で実装された JavaScript バンドラーの [Rolldown](https://rolldown.rs) を統合する計画を進めています。 + +## Rolldown とは + +Rolldown は Rust で書かれたモダンで高性能な JavaScript バンドラーです。Rollup の代替として設計されており、既存のエコシステムとの互換性を維持しながら、大幅なパフォーマンスの向上を目指しています。 + +Rolldown は以下の 3 つの重要な原則に焦点を当てています: + +- **スピード**: 最大限のパフォーマンスを実現するために Rust で構築 +- **互換性**: 既存の Rollup プラグインと連携可能 +- **開発者体験**: Rollup ユーザーにとって馴染みのある API + +## Vite が Rolldown に移行する理由 + +1. **統一化**: Vite は現在、依存関係の事前バンドルには esbuild を、プロダクション環境のビルドには Rollup を使用しています。Rolldown はこれらを単一の高性能バンドラーに統一し、両方の目的に使用できるようにすることで、複雑さを軽減することを目指しています。 + +2. **パフォーマンス**: Rolldown の Rust ベースの実装は、JavaScript ベースのバンドラーと比較して大幅なパフォーマンスの向上を提供します。具体的なベンチマークはプロジェクトのサイズや複雑さによって異なりますが、初期のテストでは Rollup と比較して有望な速度向上が示されています。 + +Rolldown の背景にある動機についての詳細は、[Rolldown が構築される理由](https://rolldown.rs/guide/#why-rolldown)を参照してください。 + +## `rolldown-vite` を試す利点 + +- 特に大規模なプロジェクトで、大幅に高速なビルド時間を体験できます +- Vite のバンドリング体験の未来を形作るための貴重なフィードバックを提供できます +- プロジェクトを将来の公式 Rolldown 統合に向けて準備できます + +## Rolldown を試す方法 + +Rolldown を搭載した Vite のバージョンは現在、`rolldown-vite` という別のパッケージとして利用可能です。`package.json` にパッケージオーバーライドを追加することで試すことができます: + +:::code-group + +```json [npm] +{ + "overrides": { + "vite": "npm:rolldown-vite@latest" + } +} +``` + +```json [Yarn] +{ + "resolutions": { + "vite": "npm:rolldown-vite@latest" + } +} +``` + +```json [pnpm] +{ + "pnpm": { + "overrides": { + "vite": "npm:rolldown-vite@latest" + } + } +} +``` + +```json [Bun] +{ + "overrides": { + "vite": "npm:rolldown-vite@latest" + } +} +``` + +::: + +これらのオーバーライドを追加した後、依存関係を再インストールし、通常通り開発サーバーを起動するかプロジェクトをビルドしてください。それ以上の設定変更は必要ありません。 + +## 既知の制限事項 + +Rolldown は Rollup の代替として機能することを目指していますが、まだ実装中の機能や意図的な動作の違いがあります。包括的なリストについては、定期的に更新される[この GitHub PR](https://github.com/vitejs/rolldown-vite/pull/84#issue-2903144667) を参照してください。 + +## 問題の報告 + +これは実験的な統合であるため、問題が発生する可能性があります。問題が発生した場合は、**メインの Vite リポジトリーではなく**、[`vitejs/rolldown-vite`](https://github.com/vitejs/rolldown-vite) リポジトリーに報告してください。 + +[問題を報告する](https://github.com/vitejs/rolldown-vite/issues/new)際は、issue テンプレートに従って以下の情報を提供してください: + +- 問題の最小限の再現方法 +- 環境の詳細(OS、Node バージョン、パッケージマネージャー) +- 関連するエラーメッセージやログ + +リアルタイムでの議論やトラブルシューティングについては、[Rolldown Discord](https://chat.rolldown.rs/) に参加してください。 + +## 今後の計画 + +`rolldown-vite` パッケージは、フィードバックを収集し Rolldown 統合を安定させるための一時的な解決策です。将来的には、この機能はメインの Vite リポジトリーにマージされる予定です。 + +`rolldown-vite` を試して、フィードバックや問題報告を通じてその開発に貢献することをお勧めします。