CLI から始める: Workers 上の Astro プロジェクトのひな形を作り、テンプレートを選びます。
npm create cloudflare@latest -- my-astro-app --framework=astroyarn create cloudflare my-astro-app --framework=astropnpm create cloudflare@latest my-astro-app --framework=astroすぐデプロイする: Astro で静的ブログを作り、Cloudflare Workers にデプロイします。CI/CD とプレビューもあらかじめ用意されます。
Astro ↗ は、大量のコンテンツを表示するサイト(ブログ、ドキュメント、オンラインストアなど)向けの JavaScript Web フレームワークです。
Astro は、クライアント側の JavaScript を最小限にして性能を重視します。デフォルトでは、できるだけ多くのコンテンツをビルド時、または「サーバー」(Cloudflare Worker でも可)での オンデマンド ↗ で描画します。インタラクティブさやパーソナライズが必要な箇所にだけ、JavaScript の 「Islands」 ↗ を追加します。
Astro は特定のフレームワークに依存せず、公式の integrations ↗ 経由で React、Preact、Svelte、Vue、SolidJS など主要な UI フレームワークに対応しています。
-
create-cloudflare CLI(C3)で新しいプロジェクトを作成します。
npm create cloudflare@latest -- my-astro-app --framework=astroyarn create cloudflare my-astro-app --framework=astropnpm create cloudflare@latest my-astro-app --framework=astro裏側で行われていること
このコマンドを実行すると、C3 は新しいプロジェクトディレクトリを作成し、Astro 公式のセットアップツール ↗ を起動し、プロジェクトを Cloudflare 向けに設定します。その後、アプリケーションを Cloudflare へすぐデプロイするかどうかを選べます。
-
ローカルで開発します。
プロジェクトを作成したあと、プロジェクトディレクトリで次のコマンドを実行し、ローカル開発サーバーを起動します。
npm run devyarn run devpnpm run dev -
プロジェクトをデプロイします。
ローカルマシン、または任意の CI/CD システム(Workers Builds を含む)から、
*.workers.devサブドメイン または カスタムドメイン へデプロイできます。次のコマンドでビルドとデプロイを行います。CI サービスを使う場合は、「デプロイコマンド」 も合わせて更新してください。npm run deployyarn run deploypnpm run deploy
プロジェクトを手動で設定する場合は、次の手順に従います。
Astro プロジェクトがすべて事前描画されている場合は、次の手順に従います。
-
Wrangler 設定ファイルを追加する
プロジェクトのルートに、次の内容の Wrangler 設定ファイルを作成します。
{ "name": "my-astro-app", // Set this to today's date "compatibility_date": "2026-09-20", "assets": { "directory": "./dist" } }name = "my-astro-app" # Set this to today's date compatibility_date = "2026-09-20" [assets] directory = "./dist"この設定の役割
この設定の要点は
assetsフィールドです。静的アセットの場所を Wrangler に伝えます。ここでは./distディレクトリを指定しています。アセットが別のディレクトリにある場合は、directoryの値を合わせて更新します。 ほかの アセット設定オプション も参照してください。この設定に
mainフィールドがない点にも注意してください。静的アセットだけを配信するため、オンデマンドレンダリング / SSR 用の Worker コードは不要です。 -
プロジェクトをビルドしてデプロイする
ローカルマシン、または任意の CI/CD システム(Workers Builds を含む)から、
*.workers.devサブドメイン または カスタムドメイン へデプロイできます。次のコマンドでビルドとデプロイを行います。CI サービスを使う場合は、「デプロイコマンド」 も合わせて更新してください。npx astro buildyarn astro buildpnpm astro buildnpx wrangler@latest deployyarn wrangler@latest deploypnpm wrangler@latest deploy
Astro プロジェクトが オンデマンドレンダリング(SSR とも呼ばれます) ↗ を使う場合は、次の手順に従います。
-
Astro の Cloudflare アダプターをインストールする
npx astro add cloudflareyarn astro add cloudflarepnpm astro add cloudflare裏側で行われていること
このコマンドは、Cloudflare アダプターをインストールし、
astro.config.mjsファイルへ必要な変更を一度に加えます。デフォルトではビルド出力の設定がoutput: 'server'になり、すべてのページがサーバー側で描画されます。オンデマンドレンダリング / SSR が不要なページ(プライバシーポリシーなどの静的ページ)がある場合は、そのページまたはルートでexport const prerender = trueを設定し、事前描画します。アダプターの設定オプションは Astro のドキュメント ↗ を参照してください。 -
.assetsignoreファイルを追加するpublic/フォルダに.assetsignoreファイルを作成し、次の行を追加します。.assetsignoretxt _worker.js _routes.json -
Wrangler 設定ファイルを追加する
プロジェクトのルートに、次の内容の Wrangler 設定ファイルを作成します。
{ "name": "my-astro-app", "main": "./dist/_worker.js/index.js", // Update to today's date // Set this to today's date "compatibility_date": "2026-09-20", "compatibility_flags": ["nodejs_compat"], "assets": { "binding": "ASSETS", "directory": "./dist" }, "observability": { "enabled": true } }name = "my-astro-app" main = "./dist/_worker.js/index.js" # Set this to today's date compatibility_date = "2026-09-20" compatibility_flags = [ "nodejs_compat" ] [assets] binding = "ASSETS" directory = "./dist" [observability] enabled = trueこの設定の役割
この設定の要点は次のとおりです。
mainは Worker スクリプトのエントリポイントを指します。Astro アダプターが生成し、サーバー描画のページを動かします。assets.directoryは静的アセットの場所を Wrangler に伝えます。ここでは./distディレクトリを指定しています。アセットが別のディレクトリにある場合は、directoryの値を合わせて更新します。
Wrangler の設定オプション と アセット設定オプション も参照してください。
-
プロジェクトをビルドしてデプロイする
ローカルマシン、または任意の CI/CD システム(Workers Builds を含む)から、
*.workers.devサブドメイン または カスタムドメイン へデプロイできます。次のコマンドでビルドとデプロイを行います。CI サービスを使う場合は、「デプロイコマンド」 も合わせて更新してください。npx astro buildyarn astro buildpnpm astro buildnpx wrangler@latest deployyarn wrangler@latest deploypnpm wrangler@latest deploy
バインディングを使うと、Astro アプリケーションを Cloudflare Developer Platform と統合でき、コンピュート、ストレージ、AI などへアクセスできます。利用できるものと設定方法は、バインディングの概要 を参照してください。
Astro のドキュメント ↗ では、locals からのアクセス方法を説明しています。
Astro の Sessions API ↗ を使うと、ユーザー設定、ショッピングカート、認証情報など、リクエストをまたぐユーザーデータを保存できます。Cloudflare アダプターを使うと、Astro はセッションストレージに Workers KV を自動設定します。
デプロイ時、Wrangler は SESSION という名前の KV 名前空間を自動で用意するため、手動設定は不要です。
---
export const prerender = false;
const cart = await Astro.session?.get("cart");
---
<a href="/checkout">{cart?.length ?? 0} items</a>別のバインディング名を使いたい場合は、アダプターの sessionKVBindingName ↗ オプションで KV バインディング名を変更できます。
Astro サイトでカスタム 404 ページを配信するには、Wrangler 設定に not_found_handling を追加します。
{
"assets": {
"directory": "./dist",
"not_found_handling": "404-page"
}
}[assets]
directory = "./dist"
not_found_handling = "404-page"ルートが見つからないとき、Cloudflare はカスタム 404 ページ(例: src/pages/404.astro)を返します。詳細は 静的アセットのルーティング動作 を参照してください。
Astro の Cloudflare アダプターは、ビルド出力の設定を output: 'server' にします。すべてのページが Cloudflare Worker でオンデマンド描画されます。オンデマンドレンダリング / SSR が不要なページ(プライバシーポリシーなどの静的ページ)がある場合は、そのページまたはルートで export const prerender = true を設定し、事前描画します。オンデマンドレンダリングの詳細は Astro のドキュメント ↗ を参照してください。
Astro を静的サイトジェネレーターとして使う場合、Astro の Cloudflare アダプターは不要です。Astro はデフォルトでビルド時にすべてのページを事前描画するので、その静的アセットを Cloudflare へアップロードして配信できます。
Astro 5.x は Node.js 18.20.8、Node.js 20.3.0 以降の 20.x、または Node.js 22.0.0 以降に対応しています。Astro 6.x と 7.x は Node.js 22.12.0 以降が必要です。Workers Builds を使う場合、デフォルトの Node.js バージョンはこの要件を満たします。デフォルトを上書きする場合は、Astro の Node.js 要件 ↗ を満たすバージョンを選びます。