Condividi le risorse del progetto su più siti

Puoi configurare uno o più siti di hosting Firebase in un singolo progetto Firebase. Poiché i siti fanno tutti parte dello stesso progetto Firebase, tutti i siti possono accedere alle altre risorse Firebase del progetto.

Configurando più siti di hosting all'interno dello 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 singoli nello stesso progetto Firebase, tutti potranno condividere lo stesso database utenti di autenticazione Firebase, pur avendo i propri domini o contenuti univoci.

Passaggio 1 : aggiorna la versione della CLI di Firebase

Accedi alle funzionalità di hosting Firebase più recenti aggiornando alla versione più recente della CLI Firebase .

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 CLI di Firebase: firebase hosting:sites:create SITE_ID

  • Utilizza l'API REST di hosting: projects.sites.create

Per ciascuno di questi metodi, specificherai un SITE_ID che verrà utilizzato per costruire i sottodomini predefiniti forniti da Firebase per il sito:

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

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

  • Deve essere un'etichetta del nome host valida, ovvero non può contenere file . , _ , eccetera.
  • Deve contenere 30 caratteri o meno
  • Deve essere univoco a livello globale all'interno di Firebase

A ciascun sito puoi anche aggiungere facoltativamente domini personalizzati per offrire lo stesso contenuto e la stessa configurazione a più URL.

Elimina 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 CLI di Firebase: firebase hosting:sites:delete SITE_ID

  • Utilizza l'API REST di hosting: projects.sites.delete

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

Passaggio 3 : imposta le destinazioni di distribuzione per i tuoi siti

Quando disponi di più siti ed esegui i comandi di distribuzione della CLI Firebase, la CLI necessita di un modo per comunicare quali impostazioni devono essere distribuite su ciascun sito. Con le destinazioni di distribuzione puoi identificare in modo univoco un sito specifico con TARGET_NAME nel file di configurazione firebase.json e nei comandi della CLI Firebase per testare o distribuire sui tuoi siti.

Per creare una destinazione di distribuzione e applicare TARGET_NAME a un sito di hosting, esegui il seguente comando CLI dalla root della directory del tuo progetto:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Dove i parametri sono:

  • TARGET_NAME : un nome univoco (che hai definito tu stesso) per il sito di hosting su cui stai distribuendo

  • RESOURCE_IDENTIFIER : il SITE_ID per il sito di hosting elencato nel tuo progetto Firebase

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

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

Le impostazioni per le destinazioni di distribuzione sono archiviate nel file .firebaserc nella directory del progetto, quindi devi impostare le destinazioni di distribuzione solo una volta per progetto.

Passaggio 4 : definire la configurazione di hosting per ciascun sito

Utilizza TARGET_NAME applicato a un sito quando ne 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 tuo file firebase.json definisce la configurazione per un solo sito, non è necessario utilizzare un formato array:

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

Passaggio 5 : testalo localmente, visualizza in anteprima le modifiche e distribuiscilo sui tuoi siti

Esegui uno dei seguenti comandi dalla radice della directory del progetto locale.

Comando Descrizione
firebase emulators:start --only hosting Emula il contenuto dell'hosting e la configurazione del sito di hosting predefinito su un URL ospitato localmente
firebase emulators:start --only hosting: TARGET_NAME Emula il contenuto dell'hosting e la configurazione del sito di hosting specificato su un URL ospitato localmente
firebase hosting:channel:deploy \
CHANNEL_ID
Distribuisce il contenuto dell'hosting e la configurazione del sito di hosting predefinito in un URL di anteprima
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Distribuisce il contenuto e la configurazione dell'hosting del sito di hosting specificato in un URL di anteprima
firebase deploy --only hosting Distribuisce il contenuto e la configurazione dell'hosting sul canale live di tutti i siti di hosting configurati in firebase.json
firebase deploy --only hosting: TARGET_NAME Distribuisce il contenuto e la configurazione dell'hosting sul canale live del sito di hosting specificato
Comando Descrizione
(non consigliato; usa invece emulators:start )
firebase serve --only hosting
Fornisce il contenuto dell'hosting e la configurazione del sito di hosting predefinito su un URL ospitato localmente
(non consigliato; usa invece emulators:start )
firebase serve --only hosting: TARGET_NAME
Fornisce il contenuto dell'hosting e la configurazione del sito di hosting specificato su un URL ospitato localmente