Ein Manifest für Erweiterungen ist eine Liste von Erweiterungsinstanzen und ihren Konfigurationen. Mit dem Manifest können Sie Folgendes tun:
- Erweiterungskonfiguration mit anderen teilen
- Konfigurationen von Erweiterungen zwischen verschiedenen Projekten kopieren (z. B. aus dem Staging-Projekt in das Produktionsprojekt)
- Alle Erweiterungen gleichzeitig bereitstellen
- Mit dem Firebase Local Emulator Suite
- Konfiguration der Erweiterungen in die Versionsverwaltung aufnehmen
- Erweiterungen in Ihre CI/CD-Pipeline einbinden
Ein Erweiterungsmanifest besteht aus zwei Teilen:
Der Abschnitt
extensions
Ihrerfirebase.json
, eine Zuordnung der Instanz-ID zur Erweiterungsversion. Beispiel:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }
.env
-Dateien mit der Konfiguration für jede Ihrer Erweiterungsinstanzen im Unterverzeichnisextensions/
des Firebase-Projektverzeichnisses. Eine Instanz derstorage-resize-images
könnte beispielsweise 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
Manifest für Erweiterungen erstellen
Es gibt drei Möglichkeiten, ein Erweiterungsmanifest zu erstellen:
- Manifest der Erweiterungen mit der Firebase CLI verwalten
- Erweiterungskonfiguration eines Projekts exportieren
- Manifestdateien manuell bearbeiten
Die ersten beiden Methoden werden unten erläutert.
Manifest für Erweiterungen mit der Firebase CLI verwalten
Sie können die meisten ext:
-Befehle der Firebase CLI mit der Option --local
ausführen, um das Manifest der Erweiterungen zu aktualisieren, ohne die aktuelle Konfiguration des Projekts zu ändern.
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 in Ihrem Projekt bereitgestellt.
Hier einige weitere Beispiele für Befehle, mit denen das Manifest der Erweiterungen geändert wird:
# 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
Erweiterungskonfiguration eines Projekts exportieren
So speichern Sie die aktuelle Erweiterungskonfiguration eines Projekts im Manifest:
- Richten Sie die Firebase CLI ein, falls noch nicht geschehen.
- Wechseln Sie über eine Shell-Eingabeaufforderung zum Projektverzeichnis. (Ihr Projektverzeichnis enthält die Datei
firebase.json
.) - Führen Sie den Befehl
ext:export
aus:firebase ext:export
Mit dem Befehl ext:export
wird der Datei firebase.json
der Abschnitt extensions
hinzugefügt. Außerdem wird mit dem Befehl ext:export
für jede installierte Erweiterungs-Instanz ein extensions
-Verzeichnis mit einer .env
-Datei erstellt. Diese Dateien enthalten die Konfigurationsparameter für jede Instanz.
Erweiterungskonfiguration mit der Firebase Local Emulator Suite testen
Nachdem Sie Ihrem Manifest für Erweiterungen einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie mit der Local Emulator Suite testen.
Installieren und konfigurieren Sie das Local Emulator Suite.
Starten Sie Local Emulator Suite:
- Führen Sie folgenden Befehl aus, um die Emulator Suite interaktiv auszuführen:
firebase emulators:start
- Führen Sie zum Ausführen der Emulator Suite und zum Ausführen eines Testskripts folgenden Befehl aus:
firebase emulators:exec my-test.sh
- Führen Sie folgenden Befehl aus, um die Emulator Suite interaktiv auszuführen:
Wenn Sie in Ihrem Manifest Erweiterungsinstanzen aufgeführt haben, lädt Local Emulator Suite den Quellcode dieser Erweiterungen auf ~/.cache/firebase/extensions
herunter. Nach dem Download wird Local Emulator Suite gestartet. Sie können dann alle durch den Hintergrund ausgelösten Funktionen der Erweiterungen auslösen und Ihre App mit der Emulator-Suite verbinden, um deren Einbindung in Ihre App zu testen.
Erweiterungskonfiguration in einem Projekt bereitstellen
Nachdem Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie es mit der Firebase CLI in einem Projekt bereitstellen. Wenn Sie mit einem Erweiterungsmanifest bereitstellen, werden alle Erweiterungsinstanzen im Manifest in einem Projekt gleichzeitig installiert, aktualisiert und konfiguriert.
So stellen Sie ein Erweiterungsmanifest bereit:
- Wechseln Sie in 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 Befehl
deploy
aus: Wenn Sie die Erweiterungen in einem anderen Projekt als dem aktuellen bereitstellen möchten, geben Sie auch--project=
an:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
Der Befehl deploy
prüft jede Instanzkonfiguration. Er fragt, ob Sie Erweiterungsinstanzen aus Ihrem Zielprojekt löschen möchten, die nicht in firebase.json
aufgeführt sind, und stellt dann alle Erweiterungsinstanzen bereit.
Projektspezifische Erweiterungskonfigurationen
Gespeicherte Erweiterungskonfigurationen können für die Bereitstellung in mehreren verschiedenen Projekten verwendet werden, z. B. in einem Staging- und einem Produktionsprojekt. Dabei müssen einige Parameterwerte für jedes Projekt möglicherweise unterschiedlich sein.
Projektspezifische .env
-Dateien ermöglichen Folgendes:
- Parameterwerte, die sich von Projekten zu
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID
unterscheiden, einfügen - Geben Sie die freigegebenen Parameterwerte in
extensions/EXTENSION_INSTANCE_ID.env
ein.
Mitunter kann es sinnvoll sein, bei der Emulation von Erweiterungen einen anderen Parameterwert zu verwenden, z. B. anstelle eines Produktionsschlüssels einen API-Testschlüssel. Legen Sie diese Parameter in eine .local
-Datei ab:
- Geben Sie nicht geheime Parameter, die Sie während der Emulation verwenden möchten, in
extensions/EXTENSION_INSTANCE_ID.env.local
ein. - Geben Sie geheime Parameterwerte in
extensions/EXTENSION_INSTANCE_ID.secret.local
ein.