Con los monorepos, puedes organizar y administrar varios proyectos en un solo directorio. En esta guía, se describe cómo comenzar a implementar apps basadas en Turborepo o Nx con App Hosting.
Implementa monorepos con Firebase console
La compatibilidad con monorepos está integrada en el flujo de configuración del backend gráfico en Firebase console. Cuando se te solicite un "Directorio raíz" en "Configuración de la implementación", especifica la ruta de acceso a la aplicación que deseas implementar dentro del monorepo:
Implementa monorepos con Firebase CLI
La compatibilidad con monorepos está integrada en el flujo de configuración del backend que invoca el comando apphosting:backends:create
de Firebase CLI. Después de ingresar a este flujo y especificar el repositorio de GitHub que elegiste, se te pedirá que especifiques el directorio raíz de tu app en relación con tu repositorio. En esta solicitud, pasa la ruta de acceso a la aplicación que deseas implementar dentro del monorepo:
$ 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
Por ejemplo, estos son los recursos que se implementarían con la siguiente estructura del proyecto y "target-app" como la aplicación que deseas compilar e implementar:
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
El directorio raíz de la app en relación con tu repositorio es apps/target-app
.
Soluciona problemas de implementación de monorepo
- Si no especificas el campo "directorio raíz" para Nx, la compilación fallará y se mostrará un mensaje que indica que App Hosting no puede encontrar un proyecto de destino dentro del monorepo de Nx. Del mismo modo, los usuarios de Turborepo deben especificar un directorio de la app de destino porque no existe el concepto de un proyecto predeterminado en Turborepo.
- En el caso de las aplicaciones de Nx + Angular, debes usar el compilador de aplicaciones de Angular para compilar la aplicación. El compilador de aplicaciones de Angular se especifica en
project.json
.