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 monorrepositorios con la consola de Firebase

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

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

Implementa monorepositorios con la CLI de Firebase

La compatibilidad con monorrepositorios está integrada en el flujo de configuración del backend que invoca el comando apphosting:backends:create de la CLI de Firebase. 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 este mensaje, 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 según la siguiente estructura del proyecto y "target-app" como la aplicación que quieres 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 mostrará un mensaje que indica que App Hosting no puede encontrar un proyecto para orientar dentro del monorepositorio de Nx. Del mismo modo, los usuarios de Turborepo deben especificar un directorio de app de destino, ya que no existe el concepto de proyecto predeterminado en Turborepo.
  • Para las aplicaciones de Nx + Angular, debes usar el sistema de compilación de aplicaciones de Angular para compilar la aplicación. El compilador de aplicaciones de Angular se especifica en project.json.