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, possono accedere alle altre risorse Firebase del progetto.

Configurando più siti Hosting all'interno dello stesso progetto Firebase, puoi condividere più facilmente le risorse Firebase tra siti e app correlati. Ad esempio, se configuri il blog, il pannello amministratore e l'app pubblica come singoli siti nello stesso progetto Firebase, possono condividere lo stesso database utenti Firebase Authentication, pur avendo domini o contenuti unici.

Passaggio 1: aggiorna la versione della CLI Firebase

Accedi alle funzionalità più recenti di Firebase Hosting eseguendo l'aggiornamento all'ultima versione della Firebase CLI.

Passaggio 2: aggiungi altri siti

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

  • Utilizza il workflow nella pagina Hosting della console Firebase

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

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

Per ciascuno di questi metodi, devi specificare un SITE_ID utilizzato per creare 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 sito deve soddisfare i seguenti requisiti:

  • Deve essere un'etichetta del nome host valida, ovvero non può contenere ., _ e così via.
  • Deve contenere massimo 30 caratteri
  • Deve essere univoco a livello globale all'interno di Firebase

Per 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 workflow nella pagina Hosting della console Firebase

  • Utilizza il comando CLI 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 le destinazioni 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 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 tuo file di configurazione firebase.json e nei tuoi comandi CLI Firebase per test o deployment sui tuoi siti.

Per creare una destinazione 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 si trovano i parametri:

  • TARGET_NAME: un nome univoco (che hai definito tu) per il sito Hosting di cui stai eseguendo il deployment

  • RESOURCE_IDENTIFIER, ovvero l'SITE_ID per il sito Hosting come indicato 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 le destinazioni di deployment sono archiviate nel file .firebaserc nella directory del progetto, quindi devi configurare le destinazioni di deployment una sola volta per progetto.

Passaggio 4: definisci la configurazione di hosting per ogni sito

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

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

Passaggio 5: esegui test in locale, visualizza l'anteprima delle modifiche e implementale sui tuoi siti

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

Comando Descrizione
firebase emulators:start --only hosting Emula i contenuti e la configurazione di Hosting del sito predefinito Hosting in un URL ospitato localmente
firebase emulators:start --only hosting:TARGET_NAME Emula i contenuti e la configurazione del sito Hosting specificato all'URL ospitato localmente Hosting
firebase hosting:channel:deploy \
CHANNEL_ID
Esegue il deployment dei contenuti e della configurazione di Hosting del sito predefinito Hosting a un URL di anteprima
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Esegue il deployment dei contenuti e della configurazione del sito Hosting specificato all'indirizzo di un URL di anteprimaHosting
firebase deploy --only hosting Esegue il deployment dei contenuti e della configurazione di Hosting sul canale live 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 live 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 predefinito Hosting a un URL ospitato localmente
(non consigliato; utilizza emulators:start)
firebase serve --only hosting:TARGET_NAME
Mostra i contenuti e la configurazione Hosting del sito Hosting specificato in un URL ospitato localmente