すべてのプロダクト
Search
ドキュメントセンター

Edge Security Acceleration:Pages プロジェクトのビルドとルーティング

最終更新日:Jul 16, 2026

esa.jsonc ファイルでビルド設定を構成し、Pages プロジェクトの静的アセットのルーティング動作をカスタマイズします。

esa.jsonc による Pages のビルド

GitHub プロジェクトのルートディレクトリに esa.jsonc ファイルを作成します。このファイルで、プロジェクトのデフォルト設定を定義および上書きできます。

メリット

  • コードとしてのインフラストラクチャ (IaC):設定はコードとともにバージョン管理され、すべての変更が追跡可能になります。

  • シームレスなチームコラボレーション:すべてのチームメンバーが 1 つの設定ファイルを共有することで、ローカル開発とクラウドデプロイメント間の一貫性が確保されます。

  • 便利なロールバック:任意の過去のコミットにロールバックし、その正確なビルド環境を再現できます。

設定の優先順位

esa.jsonc の設定は、コンソール設定よりも優先されます:

  • プロジェクトに esa.jsonc ファイルがない場合:

    • プロジェクトの詳細ページでビルドオプションを調整できます。詳細については、「コンソールでのビルド設定の変更」をご参照ください。

    • コンソール設定は、現在以降のすべてのデプロイメントに適用されます。

  • プロジェクトに esa.jsonc ファイルが存在する場合:

    • システムはこのファイルを検出し、唯一の設定ソースとして使用します。

    • プロジェクトの詳細ページでは、 esa.jsonc によって管理されるコンソール設定は無視されます。

    • 設定を変更するには、 esa.jsonc ファイルを編集し、変更を GitHub リポジトリにプッシュします。

設定例

GitHub の Pages リポジトリに esa.jsonc ファイルを追加します。例:

{
  "name": "vite-react-template",
  "entry": "./src/index.js",
  "installCommand": "npm install",
  "buildCommand": "npm run build",
  "assets": {
    "directory": "./dist",
    "notFoundStrategy": "singlePageApplication"
  }
}

パラメーター

説明

name

デプロイメントのターゲットプロジェクト。プロジェクトが存在する場合、そのプロジェクトにデプロイされます。存在しない場合、ESA はこの名前で新しいプロジェクトを作成します。

entry

エッジ関数のエントリーファイルへのパス (例:./src/index.ts)。

installCommand

カスタムインストールコマンド (例:npm install)。コンソールのインストールコマンドを上書きします。インストールをスキップするには、空に設定します。サポートされているパッケージマネージャー:npm、pnpm、yarn、cnpm、bun。

buildCommand

カスタムビルドコマンド (例:npm run build)。コンソールのビルドコマンドを上書きします。ビルドステップをスキップするには、空の文字列に設定します。

assets

静的アセットホスティングを使用すると、ESA 関数と Pages でフロントエンドウェブサイトを実行できます。各 Pages プロジェクトは 1 つのアセットディレクトリをサポートします。オプション:

  • directory:静的にホストするビルド出力ディレクトリ (例:./public、./dist、./build)。

  • notFoundStrategy:リクエストされたパスがどの静的アセットとも一致しない場合のフォールバック戦略。

    • singlePageApplication:静的ホスティングディレクトリから index.html をステータスコード 200 OK で返します。シングルページアプリケーション (SPA) で使用します。

    • 404Page:静的ホスティングディレクトリから 404.html をステータスコード 404 Not Found で返します。

      説明

      関数スクリプトと assets.notFoundStrategy の両方を設定した場合、ナビゲーションリクエストは関数スクリプトをトリガーしません。ナビゲーションリクエストは、ユーザーが直接 URL を入力したりリンクをクリックしたりしてページにアクセスする際にブラウザーから送信されるもので、Sec-Fetch-Mode: navigate ヘッダーが含まれます。

静的アセットのルーティング

esa.jsonc を設定した後、リクエストされた URL は次のように静的アセットディレクトリ内のファイルにルーティングされます:

デフォルトモード

notFoundStrategy が esa.jsonc で設定されていない場合:

{
  "name": "vite-react-template",
  "entry": "./src/index.js",
  "assets": {
    "directory": "./dist"
  }
}

ESA は次のようにリクエストをルーティングします:

image
  1. リクエスト URL がエッジノードに到達すると、ESA は一致する静的アセットがあるか確認します。見つかった場合、ESA はファイルを直接提供します。見つからない場合は、ステップ 2 に進みます。

  2. エッジルーチン (ER) の関数スクリプトが存在する場合、ESA はそれを実行します。存在しない場合は、404 Not Found 応答が返されます。

シングルページアプリケーション (SPA)

シングルページアプリケーション (SPA) の場合、esa.jsonc で notFoundStrategy を singlePageApplication に設定します。例:

{
  "name": "vite-react-template",
  "entry": "./src/index.js",
  "assets": {
    "directory": "./dist",
    "notFoundStrategy": "singlePageApplication"
  }
}

ESA は次のようにリクエストをルーティングします:

image
  1. リクエスト URL がエッジノードに到達すると、ESA は一致する静的アセットがあるか確認します。見つかった場合、ESA はファイルを直接提供します。見つからない場合は、ステップ 2 に進みます。

  2. リクエストがナビゲーションリクエスト (Sec-Fetch-Mode: navigate ヘッダーを含む) かを確認します。ナビゲーションリクエストでない場合はステップ 3 に進みます。ナビゲーションリクエストの場合は、/index.html にルーティングしてステップ a に進みます:

    1. /index.html が存在する場合、ステータスコード 200 OK とともにその内容を返します。存在しない場合は、ステップ 3 に進みます。

  3. ER の関数スクリプトが存在する場合、ESA はそれを実行します。存在しない場合は、404 Not Found 応答が返されます。

静的サイトジェネレーション

静的サイトジェネレーションアプリケーションの場合、esa.jsonc で notFoundStrategy を 404Page に設定します。例:

{
  "name": "vite-react-template",
  "entry": "./src/index.js",
  "assets": {
    "directory": "./dist",
    "notFoundStrategy": "404Page"
  }
}

ESA は次のようにリクエストをルーティングします:

image
  1. リクエスト URL がエッジノードに到達すると、ESA は一致する静的アセットがあるか確認します。見つかった場合、ESA はファイルを直接提供します。見つからない場合は、ステップ 2 に進みます。

  2. リクエストがナビゲーションリクエスト (Sec-Fetch-Mode: navigate ヘッダーを含む) かを確認します。ナビゲーションリクエストでない場合はステップ 3 に進みます。ナビゲーションリクエストの場合は、/404.html にルーティングしてステップ a に進みます:

    1. /404.html が存在する場合、ステータスコード 404 Not Found とともにその内容を返します。存在しない場合は、ステップ 3 に進みます。

  3. ER の関数スクリプトが存在する場合、ESA はそれを実行します。存在しない場合は、404 Not Found 応答が返されます。

末尾のスラッシュの自動付加

デフォルトでは、Pages は HTML ファイルに対応するリクエスト URL に末尾のスラッシュを自動的に付加します。

リクエストパスが末尾のスラッシュで終わらない場合、ESA はそのパスが HTML ファイルに解決されるかどうかを評価します。解決される場合、ESA は HTTP 301 リダイレクトを発行して、URL の末尾にスラッシュが付加されたバージョンに転送します:

  • {path}.html が静的アセットディレクトリに存在する場合、/{path} へのリクエストは /{path}/ にリダイレクトされます。たとえば、about.html が存在する場合、/about へのリクエストは /about/ にリダイレクトされます。

  • {path}/index.html が静的アセットディレクトリに存在する場合、/{path} へのリクエストは /{path}/ にリダイレクトされます。

この動作はデフォルトで有効になっており、設定は不要です。

コンソールでのビルド設定の変更

  1. ESA コンソールにログインします。 左側のナビゲーションペインで、エッジコンピューティングと AI > Functions and Pagesを選択します。

  2. Functions and Pages ページで、対象の機能またはページをクリックします。

  3. 基本情報タブを選択します。ビルド情報セクションで、変更をクリックします。

    image

  4. 必要に応じて ビルド情報 の設定を更新します。

    image

    パラメーター

    説明

    ルートディレクトリ

    ビルドコマンドが実行されるディレクトリです。デフォルトは / です。monorepo の場合、/frontend や /packages/web などのサブプロジェクトのパスを入力します。

    静的アセットディレクトリ

    ./public、./dist、または ./build などの静的アセットのビルド出力ディレクトリです。esa.jsonc ファイルの assets.directory フィールドで設定することも可能で、その設定はコンソールの ビルド情報 設定よりも優先されます。

    関数ファイルパス

    ./src/index.ts のような関数エントリファイルへのパスです。この設定は esa.jsonc ファイルの entry フィールドでも設定でき、ビルド情報 コンソールの設定よりも優先されます。

    Node.js バージョン

    ビルドに使用する Node.js のバージョンです。変更は次回のビルドで有効になります。また、package.json の engines.node フィールドでメジャーバージョンを設定することもできます。この設定は、ビルド情報 コンソールの設定よりも優先されます。

    環境変数

    ビルドプロセス用の環境変数。process.env を通じてアクセスできます。