Un manifesto delle estensioni è un elenco di istanze di estensione e relative configurazioni. Con il manifest puoi:
- Condividi la configurazione delle tue estensioni con altri
- Copia la configurazione delle estensioni tra diversi progetti (ad esempio dal tuo progetto di staging al tuo progetto di produzione)
- Implementa tutte le tue estensioni contemporaneamente
- Verifica il funzionamento delle tue estensioni con la tua app utilizzando Firebase Local Emulator Suite
- Applica la configurazione delle estensioni al controllo del codice sorgente
- Includi le estensioni nella tua pipeline CI/CD
Un manifesto delle estensioni è composto da due parti:
La sezione
extensions
del tuofirebase.json
, che è una mappa dell'ID istanza al riferimento alla versione dell'estensione. Per 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 per ciascuna delle tue istanze di estensione, nella sottodirectoryextensions/
della directory del tuo 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}.appspot.com IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Crea un manifest delle estensioni
Esistono tre modi per creare un manifest di estensioni:
- Gestisci il manifest delle estensioni con l'interfaccia a riga di comando di Firebase
- Esporta la configurazione delle estensioni di un progetto
- Modifica manualmente i file manifest
I primi due metodi sono spiegati di seguito.
Gestisci il manifest delle estensioni con l'interfaccia a riga di comando di Firebase
Puoi eseguire la maggior parte dei comandi ext:
dell'interfaccia a riga di comando di Firebase con l'opzione --local
per aggiornare il manifest delle estensioni senza modificare effettivamente la configurazione corrente del progetto.
Per 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 distribuirà la configurazione nel tuo progetto.
Ecco alcuni altri esempi di comandi che modificano il 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
Esporta la configurazione delle estensioni di un progetto
Per salvare la configurazione delle estensioni correnti di un progetto nel manifest, procedi come segue:
- Se non l'hai già fatto, configura l'interfaccia a riga di comando di Firebase
- Da un prompt della shell, passare alla directory del progetto. (La directory del tuo progetto contiene il file
firebase.json
). - Eseguire 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 di estensioni con Firebase Local Emulator Suite
Dopo aver aggiunto alcune istanze di estensione al manifest delle estensioni, puoi testarle utilizzando Local Emulator Suite.
Avvia la suite dell'emulatore locale :
- 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 tuo manifest, Local Emulator Suite scaricherà il codice sorgente di tali estensioni in ~/.cache/firebase/extensions
. Una volta scaricate, la Local Emulator Suite si avvierà e sarai in grado di attivare qualsiasi funzione attivata in background delle estensioni e connettere la tua app alla suite Emulator per testare la loro integrazione con la tua app.
Distribuisci una configurazione di estensioni in un progetto
Dopo aver aggiunto alcune istanze dell'estensione al file manifest dell'estensione, puoi distribuirlo a un progetto utilizzando l'interfaccia a riga di comando di Firebase. Quando esegui la distribuzione con un manifesto delle estensioni, installi, aggiorni e configuri tutte le istanze dell'estensione nel manifesto in un progetto contemporaneamente.
Per distribuire un manifest delle estensioni:
- Da un prompt della shell, passa alla directory che contiene la configurazione delle estensioni salvate. (Questa è la directory che contiene
firebase.json
. Se hai appena eseguitoext:export
, sei già nella directory giusta.) - Eseguire il comando
deploy
. Se desideri distribuire le estensioni a un progetto diverso da quello corrente, specifica anche--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
Il comando deploy
convaliderà ogni configurazione dell'istanza, chiederà se desideri eliminare eventuali istanze di estensione dal tuo progetto di destinazione che non sono elencate in firebase.json
, quindi distribuirà tutte le tue istanze di estensione.
Configurazioni di estensione specifiche del progetto
Le configurazioni delle estensioni salvate possono essere utilizzate per la distribuzione in più progetti diversi: ad esempio, un progetto di staging e un progetto di produzione. Quando si esegue questa operazione, 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 invece di una di produzione. Inserisci questi parametri in un file .local
:
- Inserisci i parametri non segreti che desideri utilizzare durante l'emulazione in
extensions/ EXTENSION_INSTANCE_ID .env.local
- Inserisci i valori dei parametri segreti in
extensions/ EXTENSION_INSTANCE_ID .secret.local