デプロイこのページを編集.md

Bun

スタンドアロンの Bun サーバとしてデプロイするには、ビルトインの bun アダプタを使用します。このアダプタは Bun のネイティブ Bun.serve() API を使用し、エッジ互換の fetch ハンドラとゼロコピー静的ファイル配信を提供します。

システムに Bun がインストールされている必要があります:

curl -fsSL https://bun.sh/install | bash

追加のパッケージは不要です — アダプタは @lazarv/react-server に組み込まれています。

Bun でプロダクションビルドを実行すると、bun アダプタが自動的に検出・使用されます — 設定は不要です。明示的に指定したい場合やオプションを渡したい場合は、react-server.config.mjs ファイルにアダプタを追加します:

export default { adapter: "bun", };

オプションを渡してアダプタをカスタマイズできます:

export default { adapter: [ "bun", { name: "my-app", // アプリケーション名(生成される package.json で使用) }, ], };

設定オプション

環境変数

生成されたサーバは実行時に以下の環境変数をサポートします:

Bun アダプタはエッジビルドモードを使用し、サーバ全体を単一のファイルにバンドルします。ビルド時に以下を行います:

  1. サーバコードを .bun/server/.react-server/server/edge.mjs にバンドル
  2. すべての静的アセットを .bun/static/ にコピー
  3. ビルド時静的ルートマップを含む start.mjs スクリプトを生成し、Bun.serve({ static }) でゼロコピー静的ファイル配信を実現
  4. 簡単なデプロイのための 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 # バンドルされたサーバ

CLIを使用して本番サーバを起動します:

bun --bun react-server start

ランタイムなしで直接起動することもできます:

bun --bun .bun/start.mjs

または --deploy フラグを使用してビルドと即時起動を行います:

pnpm react-server build [root] --deploy

生成された package.json のスクリプトを使用することもできます:

cd .bun bun start

Bun アダプタは自己完結型のサーバを生成するため、Bun が動作する場所ならどこでもデプロイできます:

Dockerfile の例

FROM oven/bun:latest WORKDIR /app COPY .bun/ . EXPOSE 3000 CMD ["bun", "start.mjs"]