Nuxt ↗ は、Vue.js ベースの開発をシンプルかつ強力にする Web フレームワークです。
このガイドでは、新しい Nuxt アプリケーションを作成し、Cloudflare Pages でデプロイします。
create-cloudflare CLI(C3) は、Nuxt サイトを Cloudflare Pages 向けに設定します。ターミナルで次のコマンドを実行し、新しい Nuxt サイトを作成します。
npm create cloudflare@latest -- my-nuxt-app --framework=nuxt --platform=pagesyarn create cloudflare my-nuxt-app --framework=nuxt --platform=pagespnpm create cloudflare@latest my-nuxt-app --framework=nuxt --platform=pagesC3 は一連のセットアップ質問を表示し、公式の Nuxt CLI である nuxi ↗ で新しいプロジェクトを作成します。必要なアダプターと Wrangler CLI もインストールします。
プロジェクト作成後、C3 はデフォルトの Nuxt テンプレートを使い、Cloudflare Pages と完全互換になるよう更新した my-nuxt-app ディレクトリを生成します。
新しいプロジェクトの作成時、C3 は Direct Upload でアプリケーションの初期バージョンをデプロイするかどうかを尋ねます。プロジェクトディレクトリ内で次のコマンドを実行すると、いつでも再デプロイできます。
npm run deployC3 を使わずに Nuxt プロジェクトをデプロイするには、Nuxt のはじめにガイド ↗ に従います。Nuxt プロジェクトを用意したら、Git 連携ガイド または Direct Upload ガイド を選び、Cloudflare Pages にデプロイします。
Direct Upload によるデプロイに加えて、Git 連携 でもプロジェクトをデプロイできます。Git 連携では、GitHub または GitLab のリポジトリを Pages アプリケーションに接続し、新しいコミットがプッシュされるたびに Pages アプリケーションを自動でビルドしてデプロイします。
セットアップには Git ↗ の基本的な理解が必要です。Git を初めて使う場合は、ローカルマシンへの Git の導入について、GitHub の Git handbook の要約 ↗ を参照してください。
repo.new ↗ にアクセスして、新しい GitHub リポジトリを作成します。新しいリポジトリを作成したあと、作成したプロジェクトディレクトリに移動し、次のコマンドをターミナルで実行して、ローカルアプリケーションを GitHub にプッシュする準備をします。
# Skip the following three commands if you have built your application
# using C3 or already committed your changes
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/<YOUR_GH_USERNAME>/<REPOSITORY_NAME>
git push -u origin mainサイトを Pages にデプロイするには、次の手順を実行します。
-
Cloudflare ダッシュボードで Workers & Pages ページを開きます。
Workers & Pages を開く ↗ -
Create application を選びます。
-
Pages タブを選びます。
-
Import an existing Git repository を選びます。
-
作成した新しい GitHub リポジトリを選び、Begin setup を選びます。
-
Set up builds and deployments セクションで、次の情報を入力します。
| 設定項目 | 値 |
|---|---|
| 本番ブランチ | main |
| ビルドコマンド | npm run build |
| ビルドディレクトリ | dist |
任意で Project name フィールドを変更できます。デフォルトは GitHub リポジトリ名ですが、一致している必要はありません。Project name の値が *.pages.dev サブドメインになります。
- 設定が終わったら、Save and Deploy を選びます。
最初のデプロイパイプラインが進行中であることが分かります。Pages は指定どおりに依存関係をすべてインストールし、プロジェクトをビルドします。新しいコミットをプッシュするたびに、Cloudflare Pages はプロジェクトを自動で再ビルドしてデプロイします。
加えて、プレビューデプロイ も使えます。プルリクエストに対して同じビルドとデプロイを繰り返します。本番に出す前に、実際の URL で変更を確認できます。
バインディング を使うと、アプリケーションから KV、Durable Objects、R2、D1 などの Cloudflare 開発者製品と連携できます。
プロジェクトでバインディングを使う場合は、先にローカル開発とリモート向けのバインディングを設定してください。
C3 で作成したプロジェクトには nitro-cloudflare-dev が含まれます。これは開発中のバインディング操作を簡単にする nitro モジュールです。
export default defineNuxtConfig({
modules: ["nitro-cloudflare-dev"],
});このモジュールは getPlatformProxy ヘルパー関数 を使います。getPlatformProxy は、プロジェクトの Wrangler 設定ファイルで定義したバインディングを自動検出し、ローカル開発でエミュレートします。Wrangler 設定ファイルでのバインディング設定は、バインディングの Wrangler 設定 を参照してください。
デプロイ済みアプリケーションでバインディングにアクセスするには、Cloudflare ダッシュボードで バインディングを設定 します。
適切な型サポートを得るには、プロジェクトのルートに新しい env.d.ts ファイルを作成し、バインディング を宣言します。wrangler types を実行して、Cloudflare ランタイム型を生成しておいてください。
次は KVNamespace バインディングを追加する例です。
declare module "h3" {
interface H3EventContext {
cf: CfProperties;
cloudflare: {
request: Request;
env: {
MY_KV: KVNamespace;
};
context: ExecutionContext;
};
}
}Nuxt では、サーバールートとミドルウェア ↗ でサーバーサイドのコードを追加します。API エンドポイントは defineEventHandler() で定義し、渡される context フィールドから Cloudflare のコンテキストにアクセスできます。context フィールドから、アプリケーションに設定したバインディングへアクセスできます。
次のコードは、Nuxt で KV 名前空間にアクセスする例です。
export default defineEventHandler(({ context }) => {
const MY_KV = context.cloudflare.env.MY_KV;
return {
// ...
};
});export default defineEventHandler(({ context }) => {
const MY_KV = context.cloudflare.env.MY_KV;
return {
// ...
};
});このガイドを完了すると、Nuxt サイトを Cloudflare Pages にデプロイできています。ほかのフレームワークを始めるには、Framework ガイドの一覧 を参照してください。