Condivisione delle risorse di progetto tra più siti

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

Se configuri 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 di amministrazione e l'app pubblica come singoli siti nello stesso progetto Firebase, tutti possono condividere lo stesso Firebase Authentication database utente, pur avendo domini o contenuti univoci.

Passaggio 1: aggiorna la versione di Firebase CLI

Accedi alle funzionalità più recenti Firebase Hosting aggiornando all'ultima versione 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 Hosting e serverless > Hosting pagina della Firebase console

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

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

Per ognuno di questi metodi, devi specificare un SITE_ID utilizzato per creare i sottodomini predefiniti con provisioning Firebase per il sito:

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

Poiché SITE_ID viene utilizzato per questi URL, 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 al massimo 30 caratteri
  • Deve essere univoco a livello globale in Firebase

Per ogni sito, puoi anche aggiungere facoltativamente domini personalizzati per pubblicare gli stessi contenuti e la stessa configurazione su 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 Hosting e serverless > Hosting pagina della Firebase console

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

  • Utilizza l'API REST: projects.sites.deleteHosting

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

Passaggio 3: configura le destinazioni di deployment per i tuoi siti

Quando hai più siti ed esegui i comandi di deployment di Firebase CLI, l' interfaccia a riga di comando deve essere in grado di comunicare quali impostazioni devono essere sottoposte a deployment su ogni sito. Con destinazioni di deployment puoi identificare in modo univoco un sito specifico con un TARGET_NAME nel file di configurazione firebase.json e nei comandi Firebase CLI per testare o eseguire il 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 directory principale 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 Hostingsu cui stai eseguendo il deployment

  • RESOURCE_IDENTIFIER — il SITE_ID per il sito Hosting come indicato nel 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 vengono 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 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 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 del sito Hosting predefinito Hosting su un URL ospitato in locale
firebase emulators:start --only hosting:TARGET_NAME Emula i contenuti e la configurazione Hosting del sito specificato Hosting su un URL ospitato in locale
firebase hosting:channel:deploy \
CHANNEL_ID
Esegue il deployment dei contenuti e della configurazione Hosting del sito predefinito Hosting su un URL di anteprima
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Esegue il deployment dei Hosting contenuti e della configurazione del sito Hosting specificato su un URL di anteprima
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 Hosting sul canale live del sito Hosting specificato
Comando Descrizione
(non consigliato; utilizza invece emulators:start)
firebase serve --only hosting
Pubblica i contenuti e la configurazione di Hosting del sito predefinito Hosting su un URL ospitato in locale
(non consigliato; utilizza invece emulators:start invece)
firebase serve --only hosting:TARGET_NAME
Pubblica i contenuti e la configurazione Hosting del sito Hosting specificato su un URL ospitato in locale