Usa monorepos con App Hosting

Con los monorepositorios, 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 monorepositorios con la consola Firebase

La compatibilidad con monorepositorios está integrada en el flujo de configuración del backend gráfico en la Firebase consola. 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 monorepositorio:

Captura de pantalla de la vista de creación del backend de la consola

Implementa monorepositorios con la Firebase CLI

La compatibilidad con monorepositorios está integrada en el flujo de configuración del backend que invoca el comando de la CLI Firebaseapphosting:backends:create. Después de ingresar a este flujo y especificar el repositorio de GitHub elegido, 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 monorepositorio:

$ 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 dada 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 monorepositorios

  • Si no especificas el campo "directorio raíz" para Nx, la compilación fallará y mostrará un mensaje que App Hosting no puede encontrar un proyecto de destino dentro del monorepositorio de Nx. Del mismo modo, los usuarios de Turborepo deben especificar un directorio de la app de destino porque no hay concepto de proyecto predeterminado en Turborepo.
  • Para 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.