Partager les ressources du projet sur plusieurs sites

Vous pouvez configurer un ou plusieurs sites d'hébergement Firebase dans un seul projet Firebase. Puisque les sites sont tous dans le même projet Firebase, tous les sites peuvent accéder aux autres ressources Firebase du projet.

En configurant plusieurs sites d'hébergement au sein du même projet Firebase, vous pouvez partager plus facilement les ressources Firebase entre des sites et des applications associés. Par exemple, si vous configurez votre blog, votre panneau d'administration et votre application publique en tant que sites individuels dans le même projet Firebase, ils peuvent tous partager la même base de données d'utilisateurs d'authentification Firebase, tout en ayant également leurs propres domaines ou contenus uniques.

Étape 1 : Mettez à jour votre version Firebase CLI

Accédez aux fonctionnalités d'hébergement Firebase les plus récentes en mettant à jour vers la dernière version de Firebase CLI .

Étape 2 : Ajouter des sites supplémentaires

Ajoutez des sites supplémentaires à un projet Firebase à l'aide de l'une des méthodes suivantes :

  • Utilisez le workflow dans la page Hébergement de la console Firebase

  • Utilisez la commande CLI Firebase : firebase hosting:sites:create SITE_ID

  • Utilisez l'API REST d'hébergement : projects.sites.create

Pour chacune de ces méthodes, vous spécifierez un SITE_ID qui sera utilisé pour construire les sous-domaines par défaut fournis par Firebase pour le site :

  • SITE_ID .web.app
  • SITE_ID .firebaseapp.com

Étant donné que SITE_ID est utilisé pour ces URL, l'ID de site doit répondre aux exigences suivantes :

  • Il doit s'agir d'une étiquette de nom d'hôte valide, ce qui signifie qu'elle ne peut pas contenir . , _ , etc.
  • Doit contenir 30 caractères ou moins
  • Doit être unique au monde dans Firebase

À chaque site, vous pouvez également éventuellement ajouter des domaines personnalisés pour diffuser le même contenu et la même configuration sur plusieurs URL.

Supprimer un site secondaire

Supprimez les sites indésirables d'un projet Firebase à l'aide de l'une des méthodes suivantes :

  • Utilisez le workflow dans la page Hébergement de la console Firebase

  • Utilisez la commande CLI Firebase : firebase hosting:sites:delete SITE_ID

  • Utilisez l'API REST d'hébergement : projects.sites.delete

Notez que vous ne pouvez pas supprimer le site par défaut, qui a le même SITE_ID que votre ID de projet Firebase.

Étape 3 : Configurez les cibles de déploiement pour vos sites

Lorsque vous disposez de plusieurs sites et que vous exécutez des commandes de déploiement Firebase CLI, la CLI a besoin d'un moyen de communiquer quels paramètres doivent être déployés sur chaque site. Avec les cibles de déploiement, vous pouvez identifier de manière unique un site spécifique avec un TARGET_NAME dans votre fichier de configuration firebase.json et dans vos commandes Firebase CLI pour tester ou déployer sur vos sites.

Pour créer une cible de déploiement et appliquer un TARGET_NAME à un site d'hébergement, exécutez la commande CLI suivante à partir de la racine du répertoire de votre projet :

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Où sont les paramètres :

  • TARGET_NAME — un nom unique (que vous avez défini vous-même) pour le site d'hébergement sur lequel vous déployez

  • RESOURCE_IDENTIFIER - le SITE_ID du site d'hébergement tel que répertorié dans votre projet Firebase

Par exemple, si vous avez créé deux sites ( myapp-blog et myapp-app ) dans votre projet Firebase, vous pouvez appliquer un TARGET_NAME unique ( blog et app , respectivement) à chaque site en exécutant les commandes suivantes :

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

Les paramètres des cibles de déploiement sont stockés dans le fichier .firebaserc dans le répertoire de votre projet, vous n'avez donc besoin de configurer les cibles de déploiement qu'une seule fois par projet.

Étape 4 : Définir la configuration d'hébergement pour chaque site

Utilisez TARGET_NAME appliqué à un site lorsque vous définissez sa configuration d'hébergement dans votre fichier firebase.json .

  • Si votre fichier firebase.json définit la configuration pour plusieurs sites, utilisez un format de tableau :

    {
      "hosting": [ {
          "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
          "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"
    
          // ...
        },
        {
          "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
          "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"
    
          // ...
    
          "rewrites": [...]  // You can define specific Hosting configurations for each site
        }
      ]
    }
    
  • Si votre fichier firebase.json définit la configuration pour un seul site, il n'est pas nécessaire d'utiliser un format tableau :

    {
      "hosting": {
          "target": "blog",
          "public": "dist",
    
          // ...
    
          "rewrites": [...]
      }
    }
    

Étape 5 : Testez localement, prévisualisez les modifications et déployez sur vos sites

Exécutez l’une des commandes suivantes à partir de la racine du répertoire de votre projet local.

Commande Description
firebase emulators:start --only hosting Émule le contenu d'hébergement et la configuration du site d'hébergement par défaut sur une URL hébergée localement
firebase emulators:start --only hosting: TARGET_NAME Émule le contenu d'hébergement et la configuration du site d'hébergement spécifié sur une URL hébergée localement
firebase hosting:channel:deploy \
CHANNEL_ID
Déploie le contenu d'hébergement et la configuration du site d'hébergement par défaut sur une URL d'aperçu
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Déploie le contenu d'hébergement et la configuration du site d'hébergement spécifié sur une URL d'aperçu
firebase deploy --only hosting Déploie le contenu et la configuration de l'hébergement sur le canal en direct de tous les sites d'hébergement configurés dans firebase.json
firebase deploy --only hosting: TARGET_NAME Déploie le contenu et la configuration de l'hébergement sur le canal en direct du site d'hébergement spécifié
Commande Description
(non recommandé ; utilisez plutôt emulators:start )
firebase serve --only hosting
Sert le contenu d'hébergement et la configuration du site d'hébergement par défaut sur une URL hébergée localement
(non recommandé ; utilisez plutôt emulators:start )
firebase serve --only hosting: TARGET_NAME
Sert le contenu d'hébergement et la configuration du site d'hébergement spécifié sur une URL hébergée localement