Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und deren Konfigurationen. Mit dem Manifest können Sie:
- Teilen Sie Ihre Erweiterungskonfiguration mit anderen
- Kopieren Sie Ihre Erweiterungskonfiguration zwischen verschiedenen Projekten (z. B. von Ihrem Staging-Projekt zu Ihrem Produktionsprojekt).
- Stellen Sie alle Ihre Erweiterungen auf einmal bereit
- Testen Sie mit der Firebase Local Emulator Suite, wie Ihre Erweiterungen mit Ihrer App funktionieren
- Übernehmen Sie Ihre Erweiterungskonfiguration in die Quellcodeverwaltung
- Fügen Sie Erweiterungen in Ihre CI/CD-Pipeline ein
Ein Erweiterungsmanifest besteht aus zwei Teilen:
Der
extensions
Ihrerfirebase.json
, der eine Zuordnung der Instanz-ID zur Erweiterungsversionsreferenz ist. Zum Beispiel:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }
.env
Dateien, die die Konfiguration für jede Ihrer Erweiterungsinstanzen enthalten, im Unterverzeichnisextensions/
Ihres Firebase-Projektverzeichnisses. Beispielsweise könnte eine Instanz vonstorage-resize-images
eine.env
Datei wie die folgende haben:IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.appspot.com IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Erstellen Sie ein Erweiterungsmanifest
Es gibt drei Möglichkeiten, ein Erweiterungsmanifest zu erstellen:
- Verwalten Sie Ihr Erweiterungsmanifest mit der Firebase CLI
- Exportieren Sie die Erweiterungskonfiguration eines Projekts
- Bearbeiten Sie die Manifestdateien manuell
Die ersten beiden Methoden werden im Folgenden erläutert.
Verwalten Sie Ihr Erweiterungsmanifest mit der Firebase CLI
Sie können die meisten ext:
-Befehle der Firebase-CLI mit der Option --local
ausführen, um das Erweiterungsmanifest zu aktualisieren, ohne die aktuelle Konfiguration des Projekts tatsächlich zu ändern.
Zum Beispiel:
firebase ext:install --local firebase/firestore-bigquery-export
Wenn Sie den obigen Befehl ausführen, werden Sie aufgefordert, die neueste Version der Erweiterung firebase/firestore-bigquery-export
zu konfigurieren und die Konfiguration im Manifest zu speichern, die Konfiguration wird jedoch nicht für Ihr Projekt bereitgestellt.
Hier sind einige weitere Beispiele für Befehle, die das Erweiterungsmanifest ändern:
# 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
Exportieren Sie die Erweiterungskonfiguration eines Projekts
Gehen Sie wie folgt vor, um die aktuelle Erweiterungskonfiguration eines Projekts im Manifest zu speichern:
- Richten Sie die Firebase-Befehlszeilenschnittstelle ein , falls Sie dies noch nicht getan haben
- Wechseln Sie von einer Shell-Eingabeaufforderung in das Projektverzeichnis. (Ihr Projektverzeichnis enthält die Datei
firebase.json
). - Führen Sie den
ext:export
-Befehl aus:firebase ext:export
Der Befehl ext:export
fügt der Datei firebase.json
einen extensions
hinzu. Darüber hinaus erstellt der Befehl ext:export
ein extensions
, das eine .env
Datei für jede von Ihnen installierte Erweiterungsinstanz enthält. Diese Dateien enthalten die Konfigurationsparameter für jede Instanz.
Testen Sie eine Erweiterungskonfiguration mit der Firebase Local Emulator Suite
Nachdem Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie mit der Local Emulator Suite testen.
Installieren und konfigurieren Sie die Local Emulator Suite .
Starten Sie die Local Emulator Suite :
- Um die Emulator Suite interaktiv auszuführen, führen Sie Folgendes aus:
firebase emulators:start
- Um die Emulator Suite auszuführen und ein Testskript auszuführen, führen Sie Folgendes aus:
firebase emulators:exec my-test.sh
- Um die Emulator Suite interaktiv auszuführen, führen Sie Folgendes aus:
Wenn Sie nun Erweiterungsinstanzen in Ihrem Manifest aufgelistet haben, lädt die Local Emulator Suite den Quellcode dieser Erweiterungen nach ~/.cache/firebase/extensions
herunter. Sobald sie heruntergeladen wurden, wird die Local Emulator Suite gestartet und Sie können alle im Hintergrund ausgelösten Funktionen der Erweiterungen auslösen und Ihre App mit der Emulator Suite verbinden, um ihre Integration mit Ihrer App zu testen.
Stellen Sie eine Erweiterungskonfiguration für ein Projekt bereit
Nachdem Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie mithilfe der Firebase-Befehlszeilenschnittstelle in einem Projekt bereitstellen. Wenn Sie mit einem Erweiterungsmanifest bereitstellen, installieren, aktualisieren und konfigurieren Sie alle Erweiterungsinstanzen im Manifest auf einmal in einem Projekt.
So stellen Sie ein Erweiterungsmanifest bereit:
- Wechseln Sie an einer Shell-Eingabeaufforderung in das Verzeichnis, das die gespeicherte Erweiterungskonfiguration enthält. (Dies ist das Verzeichnis, das
firebase.json
enthält. Wenn Sie geradeext:export
ausgeführt haben, befinden Sie sich bereits im richtigen Verzeichnis.) - Führen Sie den
deploy
aus. Wenn Sie die Erweiterungen in einem anderen als dem aktuellen Projekt bereitstellen möchten, geben Sie auch--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
an
Der Befehl deploy
validiert jede Instanzkonfiguration, fragt, ob Sie Erweiterungsinstanzen aus Ihrem Zielprojekt löschen möchten, die nicht in firebase.json
aufgeführt sind, und stellt dann alle Ihre Erweiterungsinstanzen bereit.
Projektspezifische Erweiterungskonfigurationen
Gespeicherte Erweiterungskonfigurationen können für die Bereitstellung in mehreren verschiedenen Projekten verwendet werden: beispielsweise in einem Staging-Projekt und einem Produktionsprojekt. Dabei müssen möglicherweise einige Parameterwerte für jedes Projekt unterschiedlich sein. Projektspezifische .env
Dateien machen dies möglich:
- Fügen Sie Parameterwerte, die sich zwischen Projekten unterscheiden, in
extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
- Geben Sie gemeinsam genutzte Parameterwerte in
extensions/ EXTENSION_INSTANCE_ID .env
.
Manchmal möchten Sie beim Emulieren Ihrer Erweiterungen möglicherweise einen anderen Parameterwert verwenden: Beispielsweise möchten Sie möglicherweise einen Test-API-Schlüssel anstelle eines Produktionsschlüssels bereitstellen. Setzen Sie diese Parameter in eine .local
Datei:
- Fügen Sie nicht geheime Parameter, die Sie während der Emulation verwenden möchten, in
extensions/ EXTENSION_INSTANCE_ID .env.local
- Setzen Sie geheime Parameterwerte in
extensions/ EXTENSION_INSTANCE_ID .secret.local