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 Turborepo- oder Nx-basierte Apps bereitstellen.

Monorepos mit der Firebase Konsole bereitstellen

Die Monorepo-Unterstützung ist in den grafischen Backend-Einrichtungsprozess in der Firebase Konsole integriert. Wenn Sie unter „Bereitstellungseinstellungen“ nach einem „Stammverzeichnis“ gefragt werden, geben Sie den Pfad zu der Anwendung an, die Sie im Monorepo bereitstellen möchten:

Screenshot der Ansicht für die Erstellung des Konsolen-Back-Ends

Monorepos mit der Firebase CLI bereitstellen

Die Monorepo-Unterstützung ist in den Backend-Einrichtungsprozess integriert, der durch den Firebase CLI-Befehl apphosting:backends:create aufgerufen wird. Nachdem Sie diesen Prozess durchlaufen und das ausgewählte GitHub-Repository angegeben haben, werden Sie aufgefordert, das Stammverzeichnis Ihrer App relativ zum Repository anzugeben. Geben Sie an dieser Stelle den Pfad zu der Anwendung an, die Sie im Monorepo bereitstellen möchten:

$ firebase apphosting:backends:create --project [project-name]
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 Projektstruktur und „target-app“ als die Anwendung, die Sie erstellen und bereitstellen möchten, bereitgestellt würden:

Nx

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

Turborepo

.
    ├── packages
    ├── apps
    │   └── target-app
    │       ├── package.json
    │       └── src
    │           └── ...
    ├── turbo.json
    ├── package.json
    └── package-lock.json

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

Fehlerbehebung bei der Bereitstellung von Monorepos

  • Wenn Sie das Feld „Stammverzeichnis“ für Nx nicht angeben, schlägt der Build fehl und es wird eine Meldung angezeigt, dass App Hosting kein Zielprojekt im Nx-Monorepo finden kann. Ebenso müssen Turborepo-Nutzer ein Ziel-App-Verzeichnis angeben, da es in Turborepo kein Standardprojekt gibt.
  • Für Nx- und Angular-Anwendungen müssen Sie den Angular-Anwendungs Builder verwenden, um die Anwendung zu erstellen. Der Angular-Anwendungs-Builder wird in project.json angegeben.