Cloudflare
Cloudflare Workers または Pages にデプロイするには、ビルトインの cloudflare アダプタを使用します。このアダプタは Cloudflare のエッジランタイムと連携するために特化して設計されています。
まず、Workers が有効な Cloudflare アカウントと wrangler CLI がインストールされている必要があります:
npm install -g wrangler
wrangler login
追加のパッケージは不要です — アダプタは @lazarv/react-server に組み込まれています。
次に、react-server.config.mjs ファイルにアダプタを追加する必要があります:
export default {
adapter: "cloudflare",
};
オプションを渡してアダプタをカスタマイズできます:
export default {
adapter: [
"cloudflare",
{
name: "my-app", // Cloudflare Worker 名
compatibilityDate: "2024-01-01", // Cloudflare 互換性日
compatibilityFlags: ["nodejs_compat_v2"], // 追加の互換性フラグ
pages: true, // Cloudflare Pages 用の _routes.json を生成
excludeRoutes: ["/api/*"], // Worker 処理から除外する追加ルート
serverlessFunctions: true, // Worker デプロイを有効化(デフォルト: true)
wrangler: {
vars: {
MY_VAR: "value",
},
},
},
],
};
設定オプション
name: Cloudflare Worker 名。package.jsonの name(スコープなし)または "react-server-app" にフォールバックします。compatibilityDate: Cloudflare 互換性日(デフォルト: 現在の日付)。compatibilityFlags: 追加の Cloudflare 互換性フラグ(必須のnodejs_compatに追加されます)。pages: Cloudflare Pages 用の_routes.jsonを生成(デフォルト: true)。excludeRoutes:_routes.jsonで Worker 処理から除外する追加ルート。serverlessFunctions: Worker デプロイの有効/無効化(デフォルト: true)。静的のみのデプロイにはfalseを設定します。wrangler: オブジェクトとしての追加 wrangler.toml 設定(アダプタのデフォルトとマージされます)。
生成された wrangler.toml を拡張するには、プロジェクトルートに react-server.wrangler.toml ファイルを作成します。アダプタはそれを自身の設定とマージします:
- プリミティブ値: アダプタ設定が優先
- オブジェクト: 再帰的にディープマージ
- 配列: カスタム設定のユニークなアイテムが保持され、アダプタのデフォルトの前に追加
これにより、アダプタが必要な設定を管理しながら、カスタムバインディング、環境変数、その他の Cloudflare 固有の設定を追加できます。
react-server.wrangler.toml[vars]
MY_API_KEY = "secret"
[[kv_namespaces]]
binding = "MY_KV"
id = "abc123"
@lazarv/react-server を Cloudflare アダプタと共に使用する場合、以下のコマンドでアプリケーションをデプロイできます:
pnpm react-server build [root] # [root] はアプリケーションのエントリーポイント
wrangler deploy
react-server CLI の --deploy 引数を使用してデプロイすることもできます:
pnpm react-server build [root] --deploy
これにより、アプリケーションがビルドされ、Cloudflare Workers にデプロイされます。
アダプタは Cloudflare Pages 互換の _routes.json ファイルを自動生成します。このファイルは、どのルートを Worker が処理し、どのルートを静的アセットとして配信するかを指定します。
デフォルトでは、画像、CSS、JavaScript、フォントなどの静的アセットは Worker 処理から除外されます。excludeRoutes オプションを使用して除外するルートを追加できます。
Cloudflare Pages にデプロイするには、Cloudflare ダッシュボードまたは wrangler pages コマンドを使用できます。