Projektkonfigurationen mit dem Erweiterungsmanifest verwalten

Ein Erweiterungsmanifest ist eine Liste mit Erweiterungsinstanzen und ihren Konfigurationen. Mit dem Manifest können Sie Folgendes tun:

  • Konfiguration der Erweiterungen 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 testen, wie die Erweiterungen mit Ihrer App funktionieren
  • Erweiterungskonfiguration der Versionsverwaltung zuweisen
  • Erweiterungen in die CI/CD-Pipeline aufnehmen

Ein Erweiterungsmanifest besteht aus zwei Teilen:

  • Der Abschnitt extensions von firebase.json, bei dem es sich um eine Zuordnung der Instanz handelt ID zur Erweiterungsversionsreferenz. 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 deiner Erweiterungen Instanzen im Unterverzeichnis extensions/ Ihres Firebase-Projekts -Verzeichnis. Beispielsweise könnte eine Instanz von storage-resize-images eine .env-Datei wie die folgende erstellen:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

Erweiterungsmanifest erstellen

Es gibt drei Möglichkeiten, ein Erweiterungsmanifest zu erstellen:

  • Manifest für Erweiterungen mit der Firebase CLI verwalten
  • Konfiguration der Erweiterungen 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 das Manifest der Erweiterungen zu aktualisieren, ohne aktuelle Konfiguration.

Beispiel:

firebase ext:install --local firebase/firestore-bigquery-export

Wenn Sie den obigen Befehl ausführen, werden Sie aufgefordert, die neueste Version von Erweiterung firebase/firestore-bigquery-export und speichern Sie die Konfiguration unter das Manifest, aber die Konfiguration wird nicht in Ihrem Projekt bereitgestellt.

Hier sind 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

Konfiguration der Erweiterungen eines Projekts exportieren

Um die aktuelle Erweiterungskonfiguration eines Projekts im Manifest zu speichern, führen Sie den Folgendes:

  1. Richten Sie die Firebase CLI ein, falls noch nicht geschehen.
  2. Wechseln Sie über eine Shell-Eingabeaufforderung in das Projektverzeichnis. (Ihr Projekt enthält die Datei firebase.json.
  3. 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 erstellt der Befehl ext:export ein extensions-Verzeichnis. mit einer .env-Datei für jede installierte Erweiterungsinstanz. Diese Dateien enthalten die Konfigurationsparameter für jede Instanz.

Erweiterungskonfiguration mit Firebase Local Emulator Suite testen

Nachdem Sie dem Manifest Ihrer Erweiterungen einige Erweiterungsinstanzen hinzugefügt haben, können Sie sie mit Local Emulator Suite testen.

  1. Installieren und konfigurieren Sie Local Emulator Suite.

  2. Starten Sie Local Emulator Suite:

    • Wenn Sie die Emulator Suite interaktiv ausführen möchten, führen Sie Folgendes aus: firebase emulators:start
    • Führen Sie den folgenden Befehl aus, um die Emulator Suite und ein Testscript auszuführen: firebase emulators:exec my-test.sh

Wenn in Ihrem Manifest Erweiterungsinstanzen aufgeführt sind, Local Emulator Suite lädt den Quellcode dieser Erweiterungen herunter, um ~/.cache/firebase/extensions. Nach dem Download Local Emulator Suite wird gestartet und Sie können Erweiterungen Funktionen auslösen, die im Hintergrund ausgelöst werden, und die App mit dem Emulator verbinden um ihre Integration in Ihre App zu testen.

Erweiterungskonfiguration in einem Projekt bereitstellen

Nachdem Sie Ihrem Erweiterungsmanifest einige Erweiterungsinstanzen hinzugefügt haben, können Sie mithilfe von Firebase CLI in einem Projekt bereitstellen Bei der Bereitstellung mit einem Erweiterungsmanifest um, dann installieren, aktualisieren und konfigurieren Sie die gesamte Erweiterung -Instanzen im Manifest gleichzeitig in ein Projekt verschieben.

So stellen Sie ein Erweiterungsmanifest bereit:

  1. Wechseln Sie über eine Shell-Eingabeaufforderung in das Verzeichnis, das die gespeicherte Datei enthält. Konfiguration von Erweiterungen. (Dies ist das Verzeichnis, das firebase.json Wenn Sie gerade ext:export ausgeführt haben, sind Sie bereits im richtigen Verzeichnis.)
  2. Führen Sie den Befehl deploy aus: Wenn Sie die Erweiterungen in einem Projekt bereitstellen möchten neben dem aktuellen, geben Sie auch --project= an:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

Der Befehl deploy prüft jede Instanzkonfiguration. Fragen Sie, ob Sie das möchten alle Erweiterungsinstanzen aus Ihrem Zielprojekt, die nicht in firebase.json und stellen Sie dann alle Ihre Erweiterungsinstanzen bereit.

Projektspezifische Erweiterungskonfigurationen

Mit gespeicherten Erweiterungen können Sie Ihre Anzeigen auf verschiedenen Projekte: z. B. ein Staging-Projekt und ein Produktionsprojekt. Dabei müssen einige Parameterwerte für jedes Projekt 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 gemeinsame Parameterwerte in extensions/EXTENSION_INSTANCE_ID.env ein.

Mitunter empfiehlt es sich, bei der Emulation des Erweiterungen: Sie können beispielsweise einen Test-API-Schlüssel anstelle eines für die Produktion. 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 Werte für geheime Parameter extensions/EXTENSION_INSTANCE_ID.secret.local