Distribuisci obiettivi

Le destinazioni di distribuzione sono identificatori di nomi brevi (che definisci tu stesso) per le risorse Firebase nel tuo progetto Firebase, come un sito di hosting con risorse statiche univoche o un gruppo di istanze di Realtime Database che condividono le stesse regole di sicurezza.

Le destinazioni di distribuzione sono utili quando disponi di più siti di hosting , più bucket di archiviazione cloud o più istanze di Realtime Database . Con le destinazioni di distribuzione, la CLI di Firebase può distribuire le impostazioni su una risorsa Firebase specifica o su un gruppo di risorse nel tuo progetto, ad esempio:

  • La configurazione di hosting per ciascuno dei tuoi siti di hosting
  • Risorse statiche dalla directory del tuo progetto per ciascuno dei tuoi siti di hosting
  • Regole di sicurezza condivise da più istanze di Realtime Database o più bucket Cloud Storage

Per impostare una destinazione di distribuzione:

  1. Applica un TARGET_NAME alla risorsa Firebase o al gruppo di risorse Firebase di destinazione.
  2. Nel file firebase.json , fai riferimento al TARGET_NAME associato quando configuri le impostazioni per ciascuna risorsa o gruppo di risorse.

Quando esegui i comandi della CLI Firebase (come firebase deploy ), la CLI Firebase accoppia ciascun TARGET_NAME con le risorse Firebase associate. La CLI comunica quindi al tuo progetto Firebase le impostazioni per ciascuna risorsa.

Configura destinazioni di distribuzione per le tue risorse Firebase

Utilizzando la CLI Firebase, applica un TARGET_NAME (identificatore del nome breve definito da te) a una risorsa Firebase o a un gruppo di risorse Firebase. Firebase supporta le destinazioni di distribuzione per:

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.

Configura le destinazioni di distribuzione per l'hosting

Per creare una destinazione di distribuzione e applicare TARGET_NAME a un sito di hosting, esegui il seguente comando CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Dove i parametri sono:

  • TYPE : il tipo di risorsa Firebase pertinente

    • Per i siti di hosting Firebase, utilizzare hosting .
  • TARGET_NAME : un nome univoco 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

Configura destinazioni di distribuzione per Cloud Storage o Realtime Database

Per creare una destinazione di distribuzione e applicare TARGET_NAME a un set di risorse Cloud Storage o Realtime Database, esegui il seguente comando CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

Dove i parametri sono:

  • TYPE : il tipo di risorsa Firebase pertinente

    • Per i bucket Cloud Storage, utilizza storage .
    • Per le istanze di Realtime Database, utilizzare database .
  • TARGET_NAME : un nome univoco per la risorsa o il gruppo di risorse che condividono regole di sicurezza

  • RESOURCE_IDENTIFIER : gli identificatori per le risorse elencate nel tuo progetto Firebase (come i nomi dei bucket di archiviazione o gli ID delle istanze del database) che condividono tutti le stesse regole di sicurezza

Ad esempio, potresti applicare TARGET_NAME di main a un gruppo di tre bucket Cloud Storage regionali (che condividono tutti le stesse regole di sicurezza) eseguendo il comando seguente:

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

Tieni presente che myproject.appspot.com è l'identificatore per il bucket predefinito, mentre myproject-eu e myproject-ja sono due bucket aggiuntivi creati nel progetto Firebase.

Configura il tuo file firebase.json per utilizzare le destinazioni di distribuzione

Dopo aver impostato le destinazioni di distribuzione per le tue risorse Firebase, fai riferimento a ciascun TARGET_NAME applicato nel file di configurazione firebase.json :

  1. Crea una serie di oggetti di configurazione per ciascun TYPE di risorsa Firebase ( hosting , storage o database ).
  2. Negli array, specifica la target (utilizzando TARGET_NAME ) e definisci le impostazioni per la risorsa Firebase o il gruppo di risorse associato.

Continuando gli esempi di cui sopra, in cui il tuo progetto Firebase ha due siti di hosting e tre bucket di archiviazione cloud (che condividono le stesse regole di sicurezza), il tuo file firebase.json sarebbe simile a questo:

{
  "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
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

Se disponi di più configurazioni per le tue risorse, puoi creare più destinazioni di distribuzione e specificarle ciascuna nel file firebase.json . Tutte le risorse associate verranno distribuite insieme quando esegui firebase deploy .

Gestire gli obiettivi di distribuzione

Le impostazioni per le destinazioni di distribuzione sono archiviate nel file .firebaserc nella directory del progetto. Puoi gestire le destinazioni di distribuzione del tuo progetto eseguendo uno dei seguenti comandi dalla radice della directory del progetto.

Comando Descrizione
firebase target Elenca le destinazioni di distribuzione per la directory del progetto corrente
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Rimuove una risorsa dalla destinazione a cui è stata assegnata
firebase target:clear \
TYPE TARGET_NAME
Rimuove tutte le risorse o il sito hosting dalla destinazione specificata

I comandi target:remove e target:clear aggiornano automaticamente le impostazioni della destinazione di distribuzione nel file .firebaserc nella directory del progetto.

Testare localmente prima della distribuzione

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

Comando Descrizione
firebase emulators:start Emula tutte le risorse configurate nella directory del progetto
firebase emulators:start \
--only hosting: TARGET_NAME
Emula solo il contenuto e la configurazione dell'hosting del sito hosting specificato
firebase emulators:start \
--only storage: TARGET_NAME
Emula solo il file delle regole per la destinazione Cloud Storage specificata
firebase emulators:start \
--only database: TARGET_NAME
Emula solo il file delle regole per la destinazione Realtime Database specificata

Scopri di più sulla configurazione e sull'utilizzo di Firebase Local Emulator Suite .

Distribuisci risorse Firebase specifiche

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

Comando Descrizione
firebase deploy Crea una versione di tutte le risorse distribuibili nella directory del progetto
firebase deploy \
--only hosting: TARGET_NAME
Distribuisce solo il contenuto e la configurazione dell'hosting del sito di hosting specificato sul canale live del sito
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Distribuisce solo il contenuto e la configurazione dell'hosting del sito di hosting specificato su un canale di anteprima per il sito
firebase deploy \
--only storage: TARGET_NAME
Distribuisce solo il file delle regole per la destinazione Cloud Storage specificata
firebase deploy \
--only database: TARGET_NAME
Distribuisce solo il file delle regole per la destinazione Realtime Database specificata