翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
モノレポビルド設定の構成
複数のプロジェクトやマイクロサービスを単一のリポジトリに格納することをモノレポと呼びます。Amplify ホスティングを使用すると、複数のビルド構成やブランチ構成を作成しなくても、モノレポにアプリケーションをデプロイできます。
Amplify は、一般的なモノレポのアプリだけでなく、npm ワークスペース、pnpm ワークスペース、Yarn ワークスペース、Nx、および Turborepo を使用して作成されたモノレポのアプリもサポートします。アプリをデプロイすると、Amplify は使用しているモノレポビルドツールを自動的に検出します。Amplify は、npmワークスペース、Yarnワークスペース、またはNxのアプリにビルド設定を自動的に適用します。Turborepo と pnpm アプリには、追加設定が必要です。詳細については、「Turborepo アプリと pnpm モノレポアプリの設定」を参照してください。
モノレポのビルド設定は Amplify コンソールに保存することも、amplify.yml
ファイルをダウンロードしてリポジトリのルートに追加することもできます。Amplify は、リポジトリで amplify.yml
ファイルを見つけない限り、コンソールに保存された設定をすべてのブランチに適用します。amplify.yml
ファイルが存在する場合、その設定は Amplify コンソールに保存されているビルド設定よりも優先されます。
モノレポビルド仕様 YAML 構文のリファレンス
モノレポビルド仕様の YAML 構文は、単一のアプリケーションを含むリポジトリの YAML 構文とは異なります。モノレポでは、各プロジェクトをアプリケーションのリストで宣言します。モノレポビルド仕様で宣言するアプリケーションごとに、以下の追加 appRoot
キーを指定する必要があります。
- appRoot
-
アプリケーションが起動するリポジトリ内のルート。キーは必ず存在する必要があり、環境変数
AMPLIFY_MONOREPO_APP_ROOT
と同じ値となります。この環境変数を設定する手順については、AMPLIFY_MONOREPO_APP_ROOT 環境変数の設定 を参照してください。
以下のモノレポビルド仕様の例は、同じリポジトリで複数の Amplify アプリケーションを宣言する方法を示しています。2 つのアプリ (react-app
と angular-app
) は applications
リストで宣言されます。各アプリの appRoot
キーは、そのアプリケーションがリポジトリの apps
ルートフォルダーにあることを示しています。
この buildpath
属性は、モノレポプロジェクトルートからアプリを実行してビルドするように /
に設定されます。baseDirectory
属性は の相対パスですbuildpath
。
version: 1 applications: - appRoot: apps/react-app env: variables: key: value backend: phases: preBuild: commands: - *enter command* build: commands: - *enter command* postBuild: commands: - *enter command* frontend: buildPath: / # Run install and build from the monorepo project root phases: preBuild: commands: - *enter command* - *enter command* build: commands: - *enter command* artifacts: files: - location - location discard-paths: yes baseDirectory: location cache: paths: - path - path test: phases: preTest: commands: - *enter command* test: commands: - *enter command* postTest: commands: - *enter command* artifacts: files: - location - location configFilePath: *location* baseDirectory: *location* - appRoot: apps/angular-app env: variables: key: value backend: phases: preBuild: commands: - *enter command* build: commands: - *enter command* postBuild: commands: - *enter command* frontend: phases: preBuild: commands: - *enter command* - *enter command* build: commands: - *enter command* artifacts: files: - location - location discard-paths: yes baseDirectory: location cache: paths: - path - path test: phases: preTest: commands: - *enter command* test: commands: - *enter command* postTest: commands: - *enter command* artifacts: files: - location - location configFilePath: *location* baseDirectory: *location*
次のビルド仕様例を使用するアプリは、プロジェクトルートの下にビルドされ、ビルドアーティファクトは にあります/packages/nextjs-app/.next
。
applications: - frontend: buildPath: '/' # run install and build from monorepo project root phases: preBuild: commands: - npm install build: commands: - npm run build --workspace=nextjs-app artifacts: baseDirectory: packages/nextjs-app/.next files: - '**/*' cache: paths: - node_modules/**/* appRoot: packages/nextjs-app
AMPLIFY_MONOREPO_APP_ROOT 環境変数の設定
モノレポに保存されたアプリをデプロイする場合、アプリの環境変数 AMPLIFY_MONOREPO_APP_ROOT
は、リポジトリのルートを基準にしたアプリルートのパスと同じ値でなければなりません。たとえば、ExampleMonorepo
という名前のモノレポに、app1
、app2
を含む apps
という名前のルートフォルダがあり、app3
は次のようなディレクトリ構造を持つとします。
ExampleMonorepo apps app1 app2 app3
この例では、app1
の環境変数 AMPLIFY_MONOREPO_APP_ROOT
の値は apps/app1
です。
Amplify コンソールを使用してモノレポアプリをデプロイすると、コンソールはアプリのルートへのパスに指定した値を使用して環境変数 AMPLIFY_MONOREPO_APP_ROOT
を自動的に設定します。ただし、モノレポアプリが既に Amplify に存在するか、 を使用してデプロイされている場合は AWS CloudFormation、Amplify コンソールのAMPLIFY_MONOREPO_APP_ROOT
環境変数セクションで環境変数を手動で設定する必要があります。
デプロイ時に AMPLIFY_MONOREPO_APP_ROOT 環境変数を自動的に設定する
以下の手順は、Amplify コンソールでモノレポアプリをデプロイする方法を示しています。Amplify は、コンソールで指定したアプリのルートフォルダーを使用して環境変数 AMPLIFY_MONOREPO_APP_ROOT
を自動的に設定します。
Amplify コンソールでモノレポアプリをデプロイするには
-
にサインイン AWS Management Console し、Amplify コンソール
を開きます。 -
右上隅の [アプリの新規作成] を選択します。
-
[Amplify で構築を開始する] ページで、お使いの Git プロバイダーを選択し、[次へ] を選択します。
-
[リポジトリブランチを追加] ページで、次の操作を行います。
-
リストからリポジトリの名前を選択します。
-
使用するブランチの名前を選択します。
-
[My アプリがモノレポです] を選択する
-
モノレポにアプリへのパスを入力します (例:
apps/app1
)。 -
[Next (次へ)] を選択します。
-
-
[アプリ設定] ページでは、デフォルト設定を使用するか、アプリのビルド設定をカスタマイズできます。[環境変数] セクションで、Amplify はステップ 4d で指定したパスに
AMPLIFY_MONOREPO_APP_ROOT
を設定します。 -
[Next (次へ)] を選択します。
-
[確認]ページ で、[保存してデプロイ]を選択します。
既存のアプリケーションの AMPLIFY_MONOREPO_APP_ROOT 環境変数を設定する
以下の手順を使用して、Amplify にすでにデプロイされているアプリ、または CloudFormation を使用して作成されたアプリの環境変数 AMPLIFY_MONOREPO_APP_ROOT
を手動で設定します。
既存のアプリケーションの AMPLIFY_MONOREPO_APP_ROOT 環境変数を設定するには
-
にサインイン AWS Management Console し、Amplify コンソール
を開きます。 -
環境変数を設定するアプリの名前を選択します。
-
ナビゲーションペインで、[ホスティング]、[環境変数] の順で選択します。
-
「環境変数」ページで、[変数の管理] を選択します。
-
[変数の管理]セクションで、次の操作を行います。
-
[新規追加] を選択します。
-
[変数] にはキー
AMPLIFY_MONOREPO_APP_ROOT
を入力します。 -
[値] には、アプリへのパスを入力します (例:
apps/app1
)。 -
[ブランチ] の場合、Amplify はデフォルトで環境変数をすべてのブランチに適用します。
-
-
[保存] を選択します。
Turborepo アプリと pnpm モノレポアプリの設定
Turborepo と pnpm ワークスペースのモノレポビルドツールは .npmrc
ファイルから構成情報を取得します。これらのツールのいずれかで作成したモノレポアプリをデプロイする場合、プロジェクトのルートディレクトリに .npmrc
ファイルを置く必要があります。
この .npmrc
ファイルで、ノードパッケージをインストールするためのリンカーを hoisted
に設定します。以下の行をファイルにコピーできます。
node-linker=hoisted
.npmrc
ファイルと設定について詳しくは、pnpm ドキュメントの pnpm .npmrc
pnpm は Amplify のデフォルトビルドコンテナには含まれていません。pnpm ワークスペースと Turborepo アプリの場合、アプリのビルド設定の preBuild
段階で pnpm をインストールするコマンドを追加する必要があります。
次のビルド仕様からの抜粋例は、pnpm をインストールするコマンドを含む preBuild
フェーズを示しています。
version: 1 applications: - frontend: phases: preBuild: commands: - npm install -g pnpm