Condividi le risorse del progetto su più siti

Puoi configurare uno o più siti Firebase Hosting in un singolo progetto Firebase. Poiché i siti sono tutti nello 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, pannello di amministrazione e app pubblica come singoli siti nello stesso progetto Firebase, tutti possono condividere lo stesso database utente di Firebase Authentication, pur avendo i propri domini o contenuti univoci.

Fase 1: Aggiornare la versione CLI Firebase

Accedere alla più recente Firebase Hosting caratteristiche per l'aggiornamento alla versione più recente del Firebase CLI .

Fase 2: Aggiungi siti aggiuntivi

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

  • Utilizzare il flusso di lavoro nella pagina di hosting della console Firebase

  • Utilizzare il comando Firebase CLI: firebase hosting:sites:create SITE_ID

  • Utilizzare l'hosting API REST: projects.sites.create

Per ciascuno di questi metodi, è necessario specificare un SITE_ID che viene utilizzato per costruire i sottodomini di default Firebase-provisioning per il sito:

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

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

  • Deve essere un'etichetta nome host valido, il che significa che non può contenere . , _ , Etc.
  • Deve essere di 30 caratteri o meno
  • Deve essere univoco a livello globale all'interno di Firebase

Per ogni sito, è anche possibile opzionalmente aggiungere domini personalizzati per servire lo stesso contenuto e la configurazione a più URL.

Elimina un sito secondario

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

  • Utilizzare il flusso di lavoro nella pagina di hosting della console Firebase

  • Utilizzare il comando Firebase CLI: firebase hosting:sites:delete SITE_ID

  • Utilizzare l'hosting API REST: projects.sites.delete

Si noti che non è possibile eliminare il sito predefinito, che ha lo stesso SITE_ID come ID del progetto Firebase.

Fase 3: Impostare obiettivi di schieramento per i vostri siti

Quando disponi di più siti ed esegui i comandi di distribuzione della CLI Firebase, la CLI ha bisogno di un modo per comunicare quali impostazioni devono essere distribuite a ciascun sito. Con obiettivi di schieramento è possibile identificare in modo univoco un sito specifico con un TARGET_NAME nel firebase.json file di configurazione e nei tuoi comandi Firebase CLI per il test o la distribuzione ai vostri siti.

Per creare un target implementare e applicare un TARGET_NAME a un sito di hosting, eseguire 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 (che avete definito voi stessi) per il sito di hosting che si sta distribuendo a

  • RESOURCE_IDENTIFIER - la SITE_ID per il sito di hosting, come indicato nel progetto Firebase

Ad esempio, se hai creato due siti ( myapp-blog e myapp-app ) nel progetto Firebase, è possibile applicare un unico TARGET_NAME ( blog e app , rispettivamente) per ciascun sito eseguendo i seguenti comandi:

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

Le impostazioni per obiettivi Deploy vengono memorizzati nel .firebaserc file nella directory del progetto, in modo che solo bisogno di impostare obiettivi distribuire uno volta per progetto.

Fase 4: Definire la configurazione di hosting per ogni sito

Utilizzare applicata di un sito TARGET_NAME quando si sta definendo la sua configurazione di hosting nel firebase.json file.

  • Se il firebase.json file definisce la configurazione per più siti, utilizzare un formato di 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 firebase.json file definisce la configurazione per un solo sito, non è necessario l'utilizzo di un formato di array:

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

Fase 5: Prova a livello locale, anteprima cambia e distribuire ai vostri siti

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

Comando Descrizione
firebase emulators:start --only hosting Emula il contenuto Hosting e configurazione del sito di hosting di default in 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
Consente di distribuire il contenuto Hosting e configurazione del sito di hosting di default ad un URL di anteprima
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Distribuisce il contenuto dell'hosting e la configurazione del sito di hosting specificato in un URL di anteprima
firebase deploy --only hosting Consente di distribuire il contenuto Hosting e configurazione per il canale in diretta di tutti i siti di hosting configurato 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
(sconsigliato; uso emulators:start invece)
firebase serve --only hosting
Serve il contenuto Hosting e configurazione del sito di hosting di default in un URL ospitato localmente
(sconsigliato; uso emulators:start invece)
firebase serve --only hosting: TARGET_NAME
Serve il contenuto dell'hosting e la configurazione del sito di hosting specificato su un URL ospitato localmente