Un manifest delle estensioni è un elenco delle istanze delle estensioni e delle relative configurazioni. Con il manifest, puoi:
- Condividere la configurazione delle estensioni con altre persone
- Copia la configurazione delle estensioni tra progetti diversi (ad esempio dal progetto di staging al progetto di produzione)
- Esegui il deployment di tutte le estensioni contemporaneamente
- Testa il funzionamento delle estensioni con la tua app utilizzando Firebase Local Emulator Suite
- Esegui il commit della configurazione delle estensioni nel controllo del codice sorgente
- Includere le estensioni nella pipeline CI/CD
Il manifest delle estensioni è composto da due parti:
La sezione
extensions
del tuofirebase.json
, ovvero una mappa dell'ID istanza al riferimento della versione dell'estensione. Ad esempio:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }
File
.env
contenenti la configurazione di ciascuna istanza dell'estensione nella sottodirectoryextensions/
della directory del progetto Firebase. Ad esempio, un'istanza distorage-resize-images
potrebbe avere un file.env
come il seguente:IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Creare un manifest delle estensioni
Esistono tre modi per creare un manifest delle estensioni:
- Gestire il manifest delle estensioni con la CLI Firebase
- Esportare la configurazione delle estensioni di un progetto
- Modificare manualmente i file manifest
I primi due metodi sono spiegati di seguito.
Gestire il manifest delle estensioni con la CLI Firebase
Puoi eseguire la maggior parte dei comandi ext:
della CLI Firebase con l'opzione --local
per aggiornare il manifest delle estensioni senza modificare la configurazione attuale del progetto.
Ad esempio:
firebase ext:install --local firebase/firestore-bigquery-export
L'esecuzione del comando precedente ti chiederà di configurare l'ultima versione dell'estensione firebase/firestore-bigquery-export
e di salvare la configurazione nel manifest, ma non la eseguirà nel tuo progetto.
Ecco altri esempi di comandi che modificano il file manifest delle estensioni:
# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local
# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local
# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local
# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local
Esportare la configurazione delle estensioni di un progetto
Per salvare la configurazione delle estensioni corrente di un progetto nel manifest, procedi nel seguente modo:
- Se non l'hai ancora fatto, configura la CLI di Firebase.
- Da un prompt della shell, passa alla directory del progetto. La directory del progetto
contiene il file
firebase.json
. - Esegui il comando
ext:export
:firebase ext:export
Il comando ext:export
aggiungerà una sezione extensions
al file firebase.json
. Inoltre, il comando ext:export
crea una directory extensions
contenente un file .env
per ogni istanza di estensione installata. Questi
file contengono i parametri di configurazione per ogni istanza.
Testa una configurazione delle estensioni con Firebase Local Emulator Suite
Dopo aver aggiunto alcune istanze di estensione al manifest delle estensioni, puoi testarle utilizzando Local Emulator Suite.
Inizia la Local Emulator Suite:
- Per eseguire Emulator Suite in modo interattivo, esegui:
firebase emulators:start
- Per eseguire Emulator Suite ed eseguire uno script di test, esegui:
firebase emulators:exec my-test.sh
- Per eseguire Emulator Suite in modo interattivo, esegui:
Ora, se hai istanze di estensione elencate nel manifest, Local Emulator Suite scaricherà il codice sorgente di queste estensioni in ~/.cache/firebase/extensions
. Una volta scaricati, il
Local Emulator Suite si avvierà e potrai attivare una qualsiasi delle
funzioni attivate in background delle estensioni e connettere la tua app alla suite Emulator
per testare la loro integrazione con la tua app.
Esegui il deployment di una configurazione delle estensioni in un progetto
Dopo aver aggiunto alcune istanze dell'estensione al manifest dell'estensione, puoi eseguire il deployment in un progetto utilizzando la CLI Firebase. Quando esegui il deployment con un manifest delle estensioni, installi, aggiorni e configuri tutte le istanze di estensione nel manifest in un progetto contemporaneamente.
Per eseguire il deployment di un manifest delle estensioni:
- Da un prompt della shell, passa alla directory che contiene la configurazione delle estensioni salvata. (Questa è la directory che contiene
firebase.json
. Se hai appena eseguitoext:export
, ti trovi già nella directory corretta.) - Esegui il comando
deploy
. Se vuoi eseguire il deployment delle estensioni in un progetto diverso da quello attuale, specifica anche--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
Il comando deploy
convalida la configurazione di ogni istanza, ti chiede se vuoi eliminare
le istanze di estensione dal progetto di destinazione che non sono
elencate in firebase.json
e poi esegue il deployment di tutte le istanze di estensione.
Configurazioni delle estensioni specifiche per progetto
Le configurazioni delle estensioni salvate possono essere utilizzate per il deployment in più progetti diversi: ad esempio, un progetto di gestione temporanea e un progetto di produzione. In questo caso, alcuni valori dei parametri potrebbero dover essere diversi per ogni progetto.
I file .env
specifici del progetto lo rendono possibile:
- Inserisci i valori dei parametri che differiscono tra i progetti in
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID
- Inserisci i valori dei parametri condivisi in
extensions/EXTENSION_INSTANCE_ID.env
.
A volte, potresti voler utilizzare un valore di parametro diverso durante l'emulazione delle tue
estensioni: ad esempio, potresti voler fornire una chiave API di test anziché una
di produzione. Inserisci questi parametri in un file .local
:
- Inserisci i parametri non segreti che vuoi utilizzare durante l'emulazione in
extensions/EXTENSION_INSTANCE_ID.env.local
- Inserisci i valori dei parametri secret in
extensions/EXTENSION_INSTANCE_ID.secret.local