Condivisione delle risorse di progetto tra più siti

Puoi configurare uno o più siti Firebase Hosting in un singolo progetto Firebase. Poiché i siti si trovano tutti nello stesso progetto Firebase, tutti possono accedere alle altre risorse Firebase del progetto.

Configurando più siti Hosting nello stesso progetto Firebase, puoi condividere più facilmente le risorse Firebase tra siti e app correlati. Ad esempio, se configuri il tuo blog, il pannello di amministrazione e l'app pubblica come siti individuali nello stesso progetto Firebase, tutti possono condividere lo stesso database utenteFirebase Authentication, pur avendo i propri domini o contenuti unici.

Passaggio 1: aggiorna la versione dell'interfaccia a riga di comando Firebase

Accedi alle funzionalità Firebase Hosting più recenti eseguendo l'aggiornamento alla versione più recente del Firebase CLI.

Passaggio 2: aggiungi altri siti

Aggiungi altri siti a un progetto Firebase utilizzando uno dei seguenti metodi:

  • Utilizza il flusso di lavoro nella pagina Hosting della console Firebase

  • Utilizza il comando dell'interfaccia a riga di comando Firebase: firebase hosting:sites:create SITE_ID

  • Utilizza l'API REST Hosting: projects.sites.create

Per ciascuno di questi metodi, dovrai specificare un SITE_ID che viene utilizzato per creare i sottodomini predefiniti di Firebase per il sito:

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

Poiché per questi URL viene utilizzato SITE_ID, l'ID sito deve soddisfare i seguenti requisiti:

  • Deve essere un'etichetta del nome host valida, il che significa che non può contenere ., _ e così via.
  • Deve contenere al massimo 30 caratteri
  • Deve essere univoco a livello globale in Firebase

A ogni sito puoi anche aggiungere domini personalizzati per pubblicare gli stessi contenuti e la stessa configurazione su più URL.

Eliminare un sito secondario

Elimina i siti indesiderati da un progetto Firebase utilizzando uno dei seguenti metodi:

  • Utilizza il flusso di lavoro nella pagina Hosting della console Firebase

  • Utilizza il comando dell'interfaccia a riga di comando Firebase: firebase hosting:sites:delete SITE_ID

  • Utilizza l'API REST Hosting: projects.sites.delete

Tieni presente che non puoi eliminare il sito predefinito, che ha lo stesso SITE_ID del tuo ID progetto Firebase.

Passaggio 3: configura i target di deployment per i tuoi siti

Quando hai più siti ed esegui i comandi di deployment dell'interfaccia a riga di comando Firebase, l'interfaccia a riga di comando deve avere un modo per comunicare quali impostazioni devono essere implementate in ogni sito. Con i target di deployment puoi identificare in modo univoco un sito specifico con un TARGET_NAME nel firebase.json file di configurazione e nei Firebase comandi CLI per il test o il deployment sui tuoi siti.

Per creare un target di deployment e applicare un TARGET_NAME a un sito Hosting, esegui il seguente comando CLI dalla radice della directory del progetto:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

dove i parametri sono:

  • TARGET_NAME: un nome univoco (definito da te) per il sito Hosting di destinazione del deployment

  • RESOURCE_IDENTIFIER: il SITE_ID per il sito Hosting come elencato nel tuo progetto Firebase

Ad esempio, se hai creato due siti (myapp-blog e myapp-app) nel tuo progetto Firebase, puoi applicare un TARGET_NAME univoco (blog e app, rispettivamente) a ogni sito eseguendo i seguenti comandi:

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

Le impostazioni per i target di deployment sono memorizzate nel file .firebaserc nella directory del progetto, quindi devi configurare i target di deployment una sola volta per progetto.

Passaggio 4: definisci la configurazione di hosting per ogni sito

Utilizza il TARGET_NAME applicato a un sito quando definisci la configurazione di hosting nel file firebase.json.

  • Se il file firebase.json definisce la configurazione per più siti, utilizza un formato array:

    {
      "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
        }
      ]
    }
    
  • Se il file firebase.json definisce la configurazione per un solo sito, non è necessario utilizzare un formato array:

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

Passaggio 5: esegui test locali, visualizza l'anteprima delle modifiche ed esegui il deployment sui tuoi siti

Esegui uno dei seguenti comandi dalla directory principale del progetto locale.

Comando Descrizione
firebase emulators:start --only hosting Emula i contenuti e la configurazione di Hosting del sito Hosting predefinito su un URL ospitato localmente
firebase emulators:start --only hosting:TARGET_NAME Emulazione dei contenuti e della configurazione del sito Hosting specificato su un URL ospitato localmenteHosting
firebase hosting:channel:deploy \
CHANNEL_ID
Esegue il deployment dei contenuti e della configurazione di Hosting del sito Hosting predefinito in un URL di anteprima
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Esegue il deployment dei contenuti e della configurazione di Hosting del sito Hosting specificato in un URL di anteprima
firebase deploy --only hosting Esegue il deployment dei contenuti e della configurazione di Hosting sul canale dal vivo di tutti i siti Hosting configurati in firebase.json
firebase deploy --only hosting:TARGET_NAME Esegue il deployment dei contenuti e della configurazione di Hosting sul canale dal vivo del sito Hosting specificato
Comando Descrizione
(non consigliato; utilizza emulators:start)
firebase serve --only hosting
Pubblica i contenuti e la configurazione di Hosting del sito Hosting predefinito su un URL ospitato localmente
(non consigliato; utilizza emulators:start)
firebase serve --only hosting:TARGET_NAME
Pubblica i contenuti e la configurazione del sito Hosting specificato su un URL ospitato localmenteHosting