Monorepos mit App Hosting verwenden

Mit Monorepos können Sie mehrere Projekte in einem einzigen Verzeichnis organisieren und verwalten. In diesem Leitfaden wird beschrieben, wie Sie mit App Hosting Nx-basierte Anwendungen bereitstellen.

Monorepos mit der Firebase CLI bereitstellen

Die Monorepo-Unterstützung ist in den Back-End-Einrichtungsvorgang integriert, der durch den Firebase-Befehlszeilenbefehl apphosting:backends:create aufgerufen wird. Nachdem Sie diesen Ablauf gestartet und das ausgewählte GitHub-Repository angegeben haben, werden Sie aufgefordert, das Stammverzeichnis Ihrer App relativ zu Ihrem Repository anzugeben. Geben Sie dazu den Pfad zur Anwendung an, die Sie im Monorepo bereitstellen möchten:

$ 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

Hier sind beispielsweise die Assets, die bei der folgenden Nx-Projektstruktur und „target-app“ als Anwendung, die Sie erstellen und bereitstellen möchten, bereitgestellt würden:

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

Das Stammverzeichnis der App relativ zu Ihrem Repository ist apps/target-app.

Monorepos mit der Firebase Console bereitstellen

Die Unterstützung für Monorepos ist in die grafische Einrichtung des Backends in der Firebase Console integriert. Wenn Sie unter „Bereitstellungseinstellungen“ nach einem „Stammverzeichnis“ gefragt werden, geben Sie den Pfad zur Anwendung an, die Sie im Monorepo bereitstellen möchten:

Screenshot der Ansicht zum Erstellen des Console-Backends

Fehlerbehebung bei der Bereitstellung eines Monorepos

  • Wenn Sie das Feld „Stammverzeichnis“ bei der Backend-Einrichtung leer lassen, kann das App-Hosting das Zielprojekt des Nutzers möglicherweise trotzdem erstellen und bereitstellen, wenn es in der defaultProject der zugehörigen nx.json-Konfigurationsdatei angegeben ist.
  • Wenn Sie weder das Feld „Stammverzeichnis“ noch eine defaultProject angeben, schlägt der Build fehl und es wird eine Meldung angezeigt, dass App Hosting kein Projekt im Nx-Monorepo finden kann, auf das es ausgerichtet werden kann.
  • Für Nx- und Angular-Anwendungen müssen Sie die Anwendung mit dem Angular Application Builder erstellen. Der Angular-Anwendungs-Builder wird in project.json angegeben.