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

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 で使用)
    },
  ],
};

設定オプション

環境変数

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

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  # バンドルされたサーバ

本番サーバを直接起動します:

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"]