App Hosting で monorepos を使用する

monorepos では、複数のプロジェクトを単一のプラットフォームで整理、管理できる されます。このガイドでは、Google Cloud で Nx ベースのアプリのデプロイを開始する方法について説明します。 App Hosting

Firebase CLI を使用して monorepos をデプロイする

Monorepo のサポートは、Firebase によって呼び出されるバックエンド設定フローに組み込まれています CLI コマンド apphosting:backends:createこのフローを開始して すると、アプリケーションのルート モジュールを リポジトリからの相対ディレクトリです。このプロンプトで、Terraform にパスを アプリケーションのイメージを pull します。

$ firebase apphosting:backends:create --project [project-name] --location us-central1
i  === Import a GitHub repository
✔  Connected with GitHub successfully

? Which GitHub repo do you want to deploy? gh-username/nx-monorepo
? Specify your app's root directory relative to your repository path/to/app

たとえば、以下の Nx 条件下でデプロイされるアセットは次のとおりです。 「target-app」という 2 つのプロジェクトにアプリケーション名として deploy:

.
    ├── lib
    ├── apps
    │   └── target-app
    │       ├── project.json
    │       └── src
    │           └── ...
    ├── nx.json
    ├── package-lock.json
    └── package.json

リポジトリを基準とするアプリのルート ディレクトリは apps/target-app です。

Firebase コンソールを使用して monorepos をデプロイする

Monorepo のサポートが Firebase のグラフィカル バックエンド設定フローに組み込まれている できます。「ルート ディレクトリ」の入力を求められたら[デプロイ設定]で monorepo 内にデプロイするアプリケーションのパスを指定します。

コンソールのバックエンド作成ビューのスクリーンショット

monorepo デプロイのトラブルシューティング

  • 「ルート ディレクトリ」からバックエンド設定時にフィールドが空白になる、App Engine アプリ 次の場合は、Hosting でユーザーのターゲット プロジェクトをビルドしてデプロイできることがあります。 関連する nx.json の defaultProject 構成 。
  • 「ルート ディレクトリ」もフィールドも defaultProject の場合、ビルドは失敗し、次のメッセージが表示されます。 App Hosting は Nx monorepo 内でターゲットとするプロジェクトが見つかりません。
  • Nx + Angular アプリケーションの場合、Angular アプリケーション ビルダーを使用してアプリケーションをビルドします。「 Angular アプリケーション ビルダーは project.json で指定します。