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 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 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 de Nx y "target-app" como la aplicación que deseas compilar e implementar:
.
├── lib
├── apps
│ └── target-app
│ ├── project.json
│ └── src
│ └── ...
├── nx.json
├── package-lock.json
└── package.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", 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.
- 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