Utiliser monorepos avec App Hosting

Avec monorepos, vous pouvez organiser et gérer plusieurs projets dans un même répertoire. Ce guide explique comment déployer des applications basées sur Nx avec App Hosting.

Déployer des monorépertoires avec la CLI Firebase

La compatibilité avec Monorepo est intégrée au flux de configuration du backend appelé par la commande apphosting:backends:create de la CLI Firebase. Une fois que vous avez entré ce flux et spécifié le dépôt GitHub de votre choix, vous êtes invité à spécifier le répertoire racine de votre application par rapport à votre dépôt. À cette invite, transmettez le chemin d'accès à l'application que vous souhaitez déployer dans le monodépôt:

$ 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

Par exemple, voici les éléments qui seraient déployés avec la structure de projet Nx suivante et "target-app" comme application que vous souhaitez compiler et déployer:

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

Le répertoire racine de l'application relatif à votre dépôt est apps/target-app.

Déployer des monorépertoires avec la console Firebase

La prise en charge des monorépertoires est intégrée au flux de configuration graphique du backend dans la console Firebase. Lorsque vous êtes invité à indiquer un "répertoire racine" sous "Paramètres de déploiement", spécifiez le chemin d'accès à l'application que vous souhaitez déployer dans le monodépôt:

Capture d'écran de la vue de création du backend de la console

Résoudre les problèmes de déploiement dans un monorépertoire

  • Si vous laissez le champ "répertoire racine" vide lors de la configuration du backend, App Hosting peut toujours compiler et déployer le projet cible de l'utilisateur s'il est spécifié dans le defaultProject du fichier de configuration nx.json associé.
  • Si vous ne spécifiez ni le champ "répertoire racine" ni un defaultProject, la compilation échouera et affichera un message indiquant que App Hosting ne peut pas trouver de projet à cibler dans le monorépertoire Nx.
  • Pour les applications Nx + Angular, vous devez utiliser le compilateur d'applications Angular pour les créer. Le compilateur d'applications Angular est spécifié dans project.json.