コンテンツにスキップ

NetlifyからPagesへの移行

Last reviewed: about 2 years ago

このチュートリアルでは、NetlifyアプリケーションをCloudflare Pagesに移行する方法を学びます。

ビルドコマンドとビルドディレクトリの確認

アプリケーションをCloudflare Pagesに移動するには、ビルドコマンドとビルドディレクトリを見つけます。Cloudflare Pagesは、この情報を使用してアプリケーションをビルドおよびデプロイします。

Netlifyダッシュボードで、デプロイしたいプロジェクトを見つけます。GitHubリポジトリからデプロイするように設定されている必要があります。

Netlifyダッシュボードでサイトを選択

サイトダッシュボード内で、サイト設定を選択し、次にビルドとデプロイを選択します。

サイトダッシュボードでサイト設定を選択

サイドバーでビルドとデプロイを選択

ビルドとデプロイタブで、ビルド設定パネルを見つけます。ここにはビルドコマンド公開ディレクトリのフィールドがあります。これらをCloudflare Pagesへのデプロイのために保存します。以下の画像では、ビルドコマンドyarn build公開ディレクトリbuild/です。

ビルドコマンドと公開ディレクトリフィールドの確認

リダイレクトとヘッダーの移行

サイトに公開ディレクトリ内に_redirectsファイルが含まれている場合、Cloudflare Pagesでも同じファイルを使用でき、リダイレクトが正常に実行されます。リダイレクトがnetlify.tomlファイルにある場合は、_redirectsフォルダに追加する必要があります。Cloudflare Pagesは現在、高度なリダイレクトのサポートが限られています。2000以上の静的および/または100の動的リダイレクトルールがある場合は、バルクリダイレクトを使用することをお勧めします。

ヘッダーファイルも公開ディレクトリ内の_headersフォルダに移動できます。重要な点は、_headersファイルで定義されたカスタムヘッダーは、関数のルートがURLパターンに一致しても、関数からのレスポンスには現在適用されないことです。ヘッダーの取り扱いについて詳しくは、ヘッダーを参照してください

フォーム

フォームコンポーネント内で、data-netlify = "true"属性または<form>タグからNetlify属性を削除します。これで、フォームロジックをPages Functionとして配置し、エントリをデータベースやAirtableに収集できます。詳細については、Pages Functionsを使用したフォームの送信の取り扱いチュートリアルを参照してください。

サーバーレス関数

Netlify関数とPages Functionsは、プロジェクトのベースにあるfunctionsディレクトリを使用してサーバーレス関数を処理する同じファイルシステムの規約を共有しています。ただし、構文や関数のデプロイ方法は異なります。Pages FunctionsはCloudflare Workers上で実行され、デフォルトでCloudflareのグローバルネットワーク上で動作し、デプロイのために追加のコードや設定は必要ありません。

Cloudflare Pages Functionsは、関数ルートハンドラーの前後に実行する必要があるロジックを処理できるミドルウェアも提供します。

関数の構文

Netlify関数は、イベントとコンテキストを引数として受け取る非同期イベントハンドラーをエクスポートします。Pages Functionsの場合、contextオブジェクトを受け取る単一のonRequest関数をエクスポートする必要があります。contextオブジェクトには、requestenvparamsなどのリクエストに関するすべての情報が含まれ、新しいResponseを返します。最初の関数の書き方について詳しくは、こちらを参照してください

Netlify関数でのHello World:

exports.handler = async function (event, context) {
return {
statusCode: 200,
body: JSON.stringify({ message: "Hello World" }),
};
}

Pages FunctionsでのHello World:

export async function onRequestPost(request) {
return new Response(`Hello world`);
}

その他のNetlify設定

netlify.tomlファイルには、プレビューのデプロイ、公開ディレクトリの指定、プラグインなど、Pagesでサポートされている他の設定が含まれている場合があります。設定を移行した後は、このファイルを削除できます。

アクセスマネジメント

ユーザー認証、イベントログ、リクエストを管理するために、Cloudflare Zero Trustにアクセス管理を移行できます。

新しいPagesプロジェクトの作成

ビルドディレクトリとビルドコマンドを見つけたら、プロジェクトをCloudflare Pagesに移動できます。

はじめにガイドでは、GitHubプロジェクトをCloudflare Pagesに追加する方法を説明します。

Pagesにカスタムドメインを使用することを選択した場合、現在デプロイされているNetlifyアプリケーションと同じカスタムドメインに設定できます。Pagesプロジェクトにカスタムドメインを割り当てるには、カスタムドメインを参照してください。

古いアプリケーションのクリーンアップとドメインの割り当て

Cloudflareダッシュボードで、DNS > レコードに移動し、NetlifyからCloudflare PagesにドメインのCNAMEレコードを更新したことを確認します。DNSレコードが更新されると、リクエストはPagesアプリケーションに送信されます。

DNSでは、レコードのコンテンツ<SUBDOMAIN>.pages.devサブドメインである必要があります。

上記の手順が完了すると、NetlifyプロジェクトをCloudflare Pagesに正常に移行したことになります。