Bun
スタンドアロンの Bun サーバとしてデプロイするには、ビルトインの bun アダプタを使用します。このアダプタは Bun のネイティブ Bun.serve() API を使用し、エッジ互換の fetch ハンドラとゼロコピー静的ファイル配信を提供します。
システムに Bun がインストールされている必要があります:
curl -fsSL https://bun.sh/install | bash
追加のパッケージは不要です — アダプタは @lazarv/react-server に組み込まれています。
次に、react-server.config.mjs ファイルにアダプタを追加します:
export default {
adapter: "bun",
};
オプションを渡してアダプタをカスタマイズできます:
export default {
adapter: [
"bun",
{
name: "my-app", // アプリケーション名(生成される package.json で使用)
},
],
};
設定オプション
name: アプリケーション名。package.jsonの name(スコープなし)または "react-server-app" にフォールバックします。
環境変数
生成されたサーバは実行時に以下の環境変数をサポートします:
PORT: サーバポート(デフォルト:3000)HOST: サーバホスト名(デフォルト:0.0.0.0)ORIGIN: サーバのオリジン URL を上書き
Bun アダプタはエッジビルドモードを使用し、サーバ全体を単一のファイルにバンドルします。ビルド時に以下を行います:
- サーバコードを
.bun/server/.react-server/server/edge.mjsにバンドル - すべての静的アセットを
.bun/static/にコピー - ビルド時静的ルートマップを含む
start.mjsスクリプトを生成し、Bun.serve({ static })でゼロコピー静的ファイル配信を実現 - 簡単なデプロイのための
package.jsonを作成
静的ファイル(HTML、CSS、JS、画像など)は fetch ハンドラを経由せず、Bun の最適化された静的ファイル処理で直接配信されるため、静的アセットに対して最高のパフォーマンスが得られます。
react-server CLI を使用してアプリケーションをビルドします:
pnpm react-server build [root]
これにより、以下の構造の .bun/ ディレクトリが生成されます:
.bun/
├── start.mjs # 静的ルートマップ付きエントリーポイント
├── package.json # デプロイメタデータ
├── static/ # すべての静的アセット
│ ├── assets/ # ハッシュ付きビルドアセット(CSS、JS)
│ ├── client/ # クライアントサイドバンドル
│ └── ... # 公開ファイル、プリレンダリング HTML
└── server/
└── .react-server/
└── server/
└── edge.mjs # バンドルされたサーバ
本番サーバを直接起動します:
bun .bun/start.mjs
または --deploy フラグを使用してビルドと即時起動を行います:
pnpm react-server build [root] --deploy
生成された package.json のスクリプトを使用することもできます:
cd .bun
bun start
Bun アダプタは自己完結型のサーバを生成するため、Bun が動作する場所ならどこでもデプロイできます:
- ベアメタル / VPS:
.bun/ディレクトリをコピーしてbun start.mjsを実行 - Docker: 公式 Bun Docker イメージを使用
- Fly.io: Dockerfile を使用して
flyctlでデプロイ - Railway、Render: 起動コマンドを
bun .bun/start.mjsに設定
Dockerfile の例
FROM oven/bun:latest
WORKDIR /app
COPY .bun/ .
EXPOSE 3000
CMD ["bun", "start.mjs"]