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 |
エッジ関数のエントリーファイルへのパス (例: |
|
installCommand |
カスタムインストールコマンド (例: |
|
buildCommand |
カスタムビルドコマンド (例: |
|
assets |
静的アセットホスティングを使用すると、ESA 関数と Pages でフロントエンドウェブサイトを実行できます。各 Pages プロジェクトは 1 つのアセットディレクトリをサポートします。オプション:
|
静的アセットのルーティング
esa.jsonc を設定した後、リクエストされた URL は次のように静的アセットディレクトリ内のファイルにルーティングされます:
デフォルトモード
notFoundStrategy が esa.jsonc で設定されていない場合:
{
"name": "vite-react-template",
"entry": "./src/index.js",
"assets": {
"directory": "./dist"
}
}
ESA は次のようにリクエストをルーティングします:
-
リクエスト URL がエッジノードに到達すると、ESA は一致する静的アセットがあるか確認します。見つかった場合、ESA はファイルを直接提供します。見つからない場合は、ステップ 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 は次のようにリクエストをルーティングします:
-
リクエスト URL がエッジノードに到達すると、ESA は一致する静的アセットがあるか確認します。見つかった場合、ESA はファイルを直接提供します。見つからない場合は、ステップ 2 に進みます。
-
リクエストがナビゲーションリクエスト (
Sec-Fetch-Mode: navigateヘッダーを含む) かを確認します。ナビゲーションリクエストでない場合はステップ 3 に進みます。ナビゲーションリクエストの場合は、/index.htmlにルーティングしてステップ a に進みます:-
/index.htmlが存在する場合、ステータスコード200 OKとともにその内容を返します。存在しない場合は、ステップ 3 に進みます。
-
-
ER の関数スクリプトが存在する場合、ESA はそれを実行します。存在しない場合は、
404 Not Found応答が返されます。
静的サイトジェネレーション
静的サイトジェネレーションアプリケーションの場合、esa.jsonc で notFoundStrategy を 404Page に設定します。例:
{
"name": "vite-react-template",
"entry": "./src/index.js",
"assets": {
"directory": "./dist",
"notFoundStrategy": "404Page"
}
}
ESA は次のようにリクエストをルーティングします:
-
リクエスト URL がエッジノードに到達すると、ESA は一致する静的アセットがあるか確認します。見つかった場合、ESA はファイルを直接提供します。見つからない場合は、ステップ 2 に進みます。
-
リクエストがナビゲーションリクエスト (
Sec-Fetch-Mode: navigateヘッダーを含む) かを確認します。ナビゲーションリクエストでない場合はステップ 3 に進みます。ナビゲーションリクエストの場合は、/404.htmlにルーティングしてステップ a に進みます:-
/404.htmlが存在する場合、ステータスコード404 Not Foundとともにその内容を返します。存在しない場合は、ステップ 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}/にリダイレクトされます。
この動作はデフォルトで有効になっており、設定は不要です。
コンソールでのビルド設定の変更
-
ESA コンソールにログインします。 左側のナビゲーションペインで、を選択します。
-
Functions and Pages ページで、対象の機能またはページをクリックします。
-
基本情報タブを選択します。ビルド情報セクションで、変更をクリックします。

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

パラメーター
説明
ルートディレクトリ
ビルドコマンドが実行されるディレクトリです。デフォルトは
/です。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を通じてアクセスできます。