Target di deployment

I target di deployment sono identificatori di nomi brevi (che puoi definire tu) per le risorse Firebase nel tuo progetto Firebase, ad esempio un sito Hosting con asset statici unici o un gruppo di istanze Realtime Database che condividono le stesse regole di sicurezza.

I target di deployment sono utili quando hai più siti Hosting, più bucket Cloud Storage o più istanze Realtime Database. Con i target di deployment, l'interfaccia a riga di comando Firebase può eseguire il deployment delle impostazioni in una risorsa o in un gruppo di risorse Firebase specifiche nel progetto, ad esempio:

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

Per configurare un target di deployment:

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

Quando esegui comandi Firebase CLI (ad esempio firebase deploy), l'interfaccia a riga di comando Firebase abbina ogni TARGET_NAME alle sue risorse Firebase associate. L'interfaccia a riga di comando comunica quindi al progetto Firebase le impostazioni per ogni risorsa.

Configura i target di deployment per le risorse Firebase

Utilizzando l'interfaccia a riga di comando Firebase, applica un TARGET_NAME (identificatore di nome breve che puoi definire tu) a una risorsa Firebase o a un gruppo di risorse Firebase. Firebase supporta i target di deployment per:

Le impostazioni per i target di deployment sono memorizzate nel file .firebaserc nella directory del progetto, quindi devi configurare i target di deployment una sola volta per progetto.

Configura i target di deployment per Hosting

Per creare una destinazione di deployment e applicare un TARGET_NAME a un sito Hosting, esegui il seguente comando dell'interfaccia a riga di comando:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

dove i parametri sono:

  • TYPE: il tipo di risorsa Firebase pertinente

    • Per i siti Firebase Hosting, utilizza hosting.
  • TARGET_NAME: un nome univoco per il sito Hosting in cui stai eseguendo il deployment

  • RESOURCE_IDENTIFIER: il SITE_ID per il sito Hosting come elencato 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 (rispettivamente blog e app) a ogni sito eseguendo i seguenti comandi:

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

Configura i target di deployment per Cloud Storage o Realtime Database

Per creare una destinazione di deployment e applicare un TARGET_NAME a un insieme 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 Realtime Database, utilizza database.
  • TARGET_NAME: un nome univoco per la risorsa o il gruppo di risorse che condividono le regole di sicurezza

  • RESOURCE_IDENTIFIER: gli identificatori delle risorse elencate nel tuo progetto Firebase (ad esempio i nomi dei bucket di archiviazione o gli ID istanza di database) che condividono tutte le stesse regole di sicurezza

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

firebase target:apply storage main myproject.firebasestorage.app myproject-eu myproject-ja

Tieni presente che myproject.firebasestorage.app è l'identificatore del bucket predefinito, mentre myproject-eu e myproject-ja sono due bucket aggiuntivi creati nel progetto Firebase.

Configurare il file firebase.json per utilizzare i target di deployment

Dopo aver configurato i target di deployment per le risorse Firebase, fai riferimento a ogni TARGET_NAME applicato nel file di configurazione firebase.json:

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

Continuando con gli esempi precedenti, se il tuo progetto Firebase ha due siti Hosting e tre bucket Cloud Storage (che condividono le stesse regole di sicurezza), il file firebase.json sarà simile al seguente:

{
  "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 hai più configurazioni per le tue risorse, puoi creare più target di deployment e specificarli nel file firebase.json. Tutte le risorse associate verranno implementate insieme quando esegui firebase deploy.

Gestire le destinazioni di deployment

Le impostazioni per i target di deployment sono archiviate nel file .firebaserc nella directory del progetto. Puoi gestire i target di deployment del progetto eseguendo uno qualsiasi dei seguenti comandi dalla directory principale del progetto.

Comando Descrizione
firebase target Elenca i target di deployment per la directory del progetto corrente
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Rimuove una risorsa dal target a cui è stata assegnata
firebase target:clear \
TYPE TARGET_NAME
Rimuove tutte le risorse o il sito Hosting dal target specificato

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

Esegui test locali prima del deployment

Esegui uno dei seguenti comandi dalla directory principale del progetto.

Comando Descrizione
firebase emulators:start Emula tutte le risorse configurate nella directory del progetto
firebase emulators:start \
--only hosting:TARGET_NAME
Emulazione solo dei contenuti e della configurazione di Hosting del sito Hosting specificato
firebase emulators:start \
--only storage:TARGET_NAME
Emulazione solo del file delle regole per il target Cloud Storage specificato
firebase emulators:start \
--only database:TARGET_NAME
Emulazione solo del file delle regole per il target Realtime Database specificato

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

Esegui il deployment di risorse Firebase specifiche

Esegui uno dei seguenti comandi dalla directory principale del progetto.

Comando Descrizione
firebase deploy Crea una release di tutte le risorse di cui è possibile eseguire il deployment nella directory del progetto
firebase deploy \
--only hosting:TARGET_NAME
Esegue il deployment solo dei contenuti e della configurazione del sito Hosting specificato nel canale live del sitoHosting
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Esegue il deployment solo dei contenuti e della configurazione di Hosting del sito Hosting specificato in un canale di anteprima per il sito
firebase deploy \
--only storage:TARGET_NAME
Esegue il deployment solo del file delle regole per il target Cloud Storage specificato
firebase deploy \
--only database:TARGET_NAME
Esegue il deployment solo del file delle regole per il target Realtime Database specificato