Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und ihren Konfigurationen. Mit dem Manifest haben Sie folgende Möglichkeiten:
- Konfiguration Ihrer Erweiterungen mit anderen teilen
- Die Konfiguration Ihrer Erweiterungen zwischen verschiedenen Projekten kopieren, z. B. von Ihrem Staging-Projekt in Ihr Produktionsprojekt
- Alle Erweiterungen gleichzeitig bereitstellen
- Mit dem Firebase Local Emulator Suite können Sie testen, wie Ihre Erweiterungen mit Ihrer App funktionieren.
- Konfiguration der Erweiterungen in der Versionsverwaltung speichern
- Erweiterungen in Ihre CI/CD-Pipeline einbinden
Ein Erweiterungsmanifest besteht aus zwei Teilen:
Der Abschnitt
extensions
Ihrerfirebase.json
, der eine Karte der Instanz-ID zur Referenz der Erweiterungsversion ist. 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/
Ihres Firebase-Projektverzeichnisses. Eine Instanz vonstorage-resize-images
könnte beispielsweise eine.env
-Datei wie die folgende haben:IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Erweiterungsmanifest erstellen
Es gibt drei Möglichkeiten, ein Erweiterungsmanifest zu erstellen:
- Erweiterungsmanifest mit der Firebase CLI verwalten
- Konfiguration der Erweiterungen eines Projekts exportieren
- Manifestdateien manuell bearbeiten
Die ersten beiden Methoden werden unten beschrieben.
Erweiterungsmanifest mit der Firebase CLI verwalten
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 zu ändern.
Beispiel:
firebase ext:install --local firebase/firestore-bigquery-export
Wenn Sie den oben genannten Befehl ausführen, werden Sie aufgefordert, die neueste Version der firebase/firestore-bigquery-export
-Erweiterung zu konfigurieren und die Konfiguration im Manifest zu speichern. Die Konfiguration wird jedoch nicht in Ihrem Projekt bereitgestellt.
Hier sind einige weitere Beispiele für Befehle, mit denen das Erweiterungsmanifest 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
Konfiguration der Erweiterungen 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 die Shell-Eingabeaufforderung in das Projektverzeichnis. Das 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
ein extensions
-Abschnitt hinzugefügt. Außerdem wird mit dem Befehl ext:export
ein extensions
-Verzeichnis erstellt, das für jede installierte Erweiterungsinstanz eine .env
-Datei enthält. Diese Dateien enthalten die Konfigurationsparameter für jede Instanz.
Konfiguration einer Erweiterung mit dem Firebase Local Emulator Suite testen
Nachdem Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie mit dem Local Emulator Suite testen.
Installieren und konfigurieren Sie das Local Emulator Suite.
-
- Wenn Sie die Emulator Suite interaktiv ausführen möchten, führen Sie folgenden Befehl aus:
firebase emulators:start
- Führen Sie den folgenden Befehl aus, um die Emulator Suite zu starten und ein Testskript auszuführen:
firebase emulators:exec my-test.sh
- Wenn Sie die Emulator Suite interaktiv ausführen möchten, führen Sie folgenden Befehl aus:
Wenn in Ihrem Manifest Erweiterungsinstanzen aufgeführt sind, lädt Local Emulator Suite den Quellcode dieser Erweiterungen in ~/.cache/firebase/extensions
herunter. Nach dem Herunterladen wird die Local Emulator Suite gestartet. Sie können dann alle Funktionen der Erweiterungen, die im Hintergrund ausgelöst werden, auslösen und Ihre App mit der Emulator Suite verbinden, um die Integration 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 die Bereitstellung mit einem Erweiterungsmanifest vornehmen, werden alle Erweiterungsinstanzen im Manifest gleichzeitig in einem Projekt installiert, aktualisiert und konfiguriert.
So stellen Sie ein Erweiterungsmanifest bereit:
- Wechseln Sie über die Shell-Eingabeaufforderung in das Verzeichnis, das die gespeicherte Konfiguration der Erweiterungen enthält. Dies ist das Verzeichnis, das
firebase.json
enthält. Wenn Sieext:export
gerade 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
Mit dem Befehl deploy
wird jede Instanzkonfiguration validiert. Sie werden gefragt, ob Sie Erweiterungsinstanzen aus Ihrem Zielprojekt löschen möchten, die nicht in firebase.json
aufgeführt sind. Anschließend werden alle Ihre Erweiterungsinstanzen bereitgestellt.
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 möglicherweise für jedes Projekt unterschiedlich sein.
Projektspezifische .env
-Dateien machen dies möglich:
- Parameterwerte, die sich zwischen Projekten unterscheiden, sollten in
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID
angegeben werden. - Geben Sie freigegebene Parameterwerte in
extensions/EXTENSION_INSTANCE_ID.env
an.
Manchmal möchten Sie möglicherweise einen anderen Parameterwert verwenden, wenn Sie Ihre Erweiterungen emulieren. Sie können beispielsweise einen Test-API-Schlüssel anstelle eines Produktions-API-Schlüssels angeben. Fügen Sie diese Parameter in eine .local
-Datei ein:
- Nicht vertrauliche Parameter, die Sie während der Emulation verwenden möchten, müssen in
extensions/EXTENSION_INSTANCE_ID.env.local
angegeben werden. - Geheime Parameterwerte in
extensions/EXTENSION_INSTANCE_ID.secret.local
einfügen