Usar monorepos com o App Hosting

Com monorepos, você pode organizar e gerenciar vários projetos em um único diretório. Este guia descreve como começar a implantar apps baseados em Nx com App Hosting.

Implantar monorepos com a CLI do Firebase

O suporte a monorepos é integrado ao fluxo de configuração do back-end invocado pelo comando apphosting:backends:create da CLI do Firebase. Depois de entrar nesse fluxo e especificar o repositório do GitHub escolhido, você vai receber uma solicitação para especificar o diretório raiz do app em relação ao repositório. Nesse prompt, transmita o caminho para o aplicativo que você quer implantar no monorepo:

$ firebase apphosting:backends:create --project [project-name] --location us-central1
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 exemplo, estes são os recursos que seriam implantados com a seguinte estrutura de projeto do Nx e "target-app" como o aplicativo que você quer criar e implantar:

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

O diretório raiz do app em relação ao repositório é apps/target-app.

Implantar monorepos com o console do Firebase

O suporte a monorepos está integrado ao fluxo de configuração de back-end gráfico no console do Firebase. Quando solicitado um "diretório raiz" em "Configurações de implantação", especifique o caminho para o aplicativo que você quer implantar no monorepo:

Captura de tela da visualização de criação do back-end do console

Solução de problemas de implantação de monorepo

  • Se você deixar o campo "diretório raiz" em branco durante a configuração do back-end, o App Hosting ainda poderá criar e implantar o projeto de destino do usuário se ele for especificado no defaultProject do arquivo de configuração nx.json relacionado.
  • Se você não especificar o campo "diretório raiz" nem um defaultProject, o build vai falhar e mostrar uma mensagem informando que App Hosting não consegue encontrar um projeto para segmentar dentro do monorepo do Nx.
  • Para aplicativos Nx + Angular, é necessário usar o criador de aplicativos Angular. O builder do aplicativo Angular é especificado em project.json