Installieren, konfigurieren und integrieren Sie die Local Emulator Suite

Die Firebase Local Emulator Suite kann für verschiedene Prototypen und Testumgebungen, alles von Einmal Prototyping-Sitzungen im Produktionsmaßstab kontinuierliche Integration Workflows installiert und konfiguriert werden.

Installieren Sie die Local Emulator Suite

Bevor der Emulator Suite Installation benötigen Sie:

  • Node.js Version 8.0 oder höher.
  • Java JDK Version 11 oder höher.

Um die Emulator Suite zu installieren:

  1. Installieren Sie die Firebase CLI . Wenn Sie nicht bereits installiert die Firebase CLI haben, installieren Sie es jetzt . Sie müssen CLI-Version 8.14.0 oder höher die Emulator Suite verwenden. Sie können Sie installiert haben , welche Version überprüfen Sie den folgenden Befehl:
    firebase --version
  2. Wenn Sie dies noch nicht getan haben, initialisieren Sie das aktuelle Arbeitsverzeichnis als Firebase - Projekt, nach den Anweisungen auf dem Bildschirm , welche Produkte zu verwenden , um anzugeben:
    firebase init
  3. Stellen Sie den Emulator Suite. Dieser Befehl startet einen Konfigurationsassistenten, die Sie Emulatoren von Interesse auswählen können, laden Sie die entsprechenden Emulator Binärdateien und Set-Emulator-Ports, wenn die Standardeinstellungen nicht geeignet sind.
    firebase init emulators

Sobald ein Emulator installiert ist, werden keine Update-Prüfungen durchgeführt und keine zusätzlichen automatischen Downloads wird auftreten, bis Sie Ihre Firebase CLI-Version aktualisieren.

Configure Emulator Suite

Sie können optional auch die Emulatoren Netzwerk - Ports und den Pfad zu Sicherheitsregeln Definitionen in der Konfiguration firebase.json Datei:

  • Ändern Emulator - Ports , indem firebase init emulators oder bearbeite firebase.json manuell.
  • Ändern Sie den Pfad zu den Sicherheitsregeln Definitionen und bearbeite firebase.json manuell.

Wenn Sie diese Einstellungen nicht konfigurieren, werden die Emulatoren auf ihren Standard-Ports hören, und die Wolke Firestor, Echtzeit-Datenbank und Cloud Storage-Emulatoren mit offener Datensicherheit führen.

Befehl Beschreibung
init - Emulatoren Starten Sie einen Emulator Initialisierung Assistenten. Identifizieren Emulatoren installiert werden und optional Emulator-Port-Einstellungen angeben. init emulators ist zerstörungsfrei ; Annahme von Standardeinstellungen wird die aktuelle Emulator-Konfiguration erhalten.

Port-Konfiguration

Jeder Emulator bindet an einen anderen Port auf Ihrem Rechner mit einem bevorzugten Standardwert.

Emulator Standard - Port
Authentifizierung 9099
Emulator Suite UI 4000
Cloud-Funktionen 5001
Echtzeit-Datenbank 9000
Cloud Firestor 8080
Cloud Storage 9199
Firebase Hosting 5000
Pub / Sub 8085

Sicherheit Regeln Konfiguration

Die Emulatoren nehmen Sicherheitsregeln Konfiguration der database , firestore und storage in firebase.json .

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore" {
    "rules": "firestore.rules"
  },
  "storage" {
    "rules": "storage.rules"
  }

  // ...

  // Optional emulator configuration. Default
  // values are used if absent.
  "emulators": {
    "firestore": {
      "port": "8080"
    },
    "ui": {
      "enabled": true,      // Default is `true`
      "port": 4000          // If unspecified, see CLI log for selected port
    },
    "auth": {
      "port": "9099"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

Angeben von Java-Optionen

Die Echtzeit - Datenbank - Emulator, Wolke Firestore - Emulator, und ein Teil von Cloud Storage - Emulator basiert auf Java, die mit JVM - Flags über die Umgebungsvariable kann angepasst werden JAVA_TOOL_OPTIONS .

Zum Beispiel, wenn Sie Java Heap-Speicher auf Fehler auftreten, können Sie die maximale Java-Heap-Größe auf 4 GB erhöhen:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

Mehrere Flags können in Anführungszeichen angegeben werden durch Leerzeichen getrennt, wie JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" . Die Flaggen betreffen nur die Java-basierten Komponenten der Emulatoren und haben keine Auswirkungen auf andere Teile des Firebase CLI, wie Emulator Suite UI.

Start-up-Emulatoren

Sie können Emulatoren beginnen zu laufen, bis sie manuell beendet oder für die Dauer eines bestimmten Testskript ausgeführt werden dann automatisch heruntergefahren.

Befehl Beschreibung
Emulatoren: Start Start - Emulatoren für die Firebase Produkte konfiguriert firebase.json . Emulator Prozesse werden fortgesetzt, bis explizit gestoppt läuft. Der Aufruf emulators:start wird laden Sie die Emulatoren ~ / .cache / Firebase / Emulatoren / wenn sie nicht bereits installiert sind.
Flagge Decription
--only Optional. Grenze, die Emulatoren starten. Geben Sie eine durch Kommata getrennte Liste von Emulator Namen, unter Angabe eines oder mehrere der ‚Auth‘, ‚Datenbank‘, ‚Firestor‘, ‚Funktionen‘, ‚Hosting‘ oder ‚PubSub‘.
--inspect-functions debug_port Optional. Verwendung mit den Cloud-Funktionen Emulator Unterbrechungs Debuggen von Funktionen an dem angegeben Port (oder dem Standard-Port 9229, wenn Argumente weggelassen) zu ermöglichen. Beachten Sie, dass, wenn dieses Flag zugeführt wird, der Cloud-Emulator Functions schaltet auf einen speziellen serialisiert Ausführungsmodus, in dem Funktionen in einem einzigen Prozess ausgeführt werden, in sequentieller (FIFO) Reihenfolge; Dies vereinfacht das Debuggen funktionieren, obwohl das Verhalten unterscheidet sich von Multi-Prozess, die parallele Ausführung von Funktionen in der Wolke.
--export-on-exit= Optional. Verwenden Sie mit der Authentifizierung, Wolke Firestor, Echtzeit-Datenbank oder Cloud Storage-Emulator. Anweisen , den Emulator (en) auf Export von Daten in ein Verzeichnis beim Abschalten auftritt, wie für den beschriebenen emulators:export . Das Exportverzeichnis kann mit diesem Flag angegeben werden: firebase emulators:start --export-on-exit=./saved-data . . Wenn --import verwendet wird, Versäumnisse der Exportpfad zu derselben; Zum Beispiel: firebase emulators:start --import=./data-path --export-on-exit . . Schließlich, wenn gewünscht, passieren verschiedene Verzeichnispfade zum --import und --export-on-exit Flags.
--import= import_directory Optional. Verwenden Sie mit der Authentifizierung, Wolke Firestor, Echtzeit-Datenbank oder Cloud Storage-Emulator. Importieren von Daten gespeichert unter Verwendung der --export-on-exit Startoption oder die emulators:export Befehls an eine laufenden Authentifizierung, Wolke Firestor, Echtzeit - Datenbank oder Cloud Storage - Emulator - Instanz. Alle Daten zur Zeit in Emulator Speicher werden overwitten.
Emulatoren: exec scriptpath Führen Sie das Skript an scriptpath nach Emulatoren für die Firebase Produkte konfiguriert Start firebase.json . Emulator Prozesse werden automatisch beendet, wenn das Skript fertig Laufen hat.
Flagge Decription
--only Optional. Grenze, die Emulatoren starten. Geben Sie eine durch Kommata getrennte Liste von Emulator Namen, unter Angabe eines oder mehrere der ‚Firestor‘, ‚Datenbank‘, ‚Funktionen‘, ‚Hosting‘ oder ‚PubSub‘.
--inspect-functions debug_port Optional. Verwendung mit den Cloud-Funktionen Emulator Unterbrechungs Debuggen von Funktionen an dem angegeben Port (oder dem Standard-Port 9229, wenn Argumente weggelassen) zu ermöglichen. Beachten Sie, dass, wenn dieses Flag zugeführt wird, der Cloud-Emulator Functions schaltet auf einen speziellen serialisiert Ausführungsmodus, in dem Funktionen in einem einzigen Prozess ausgeführt werden, in sequentieller (FIFO) Reihenfolge; Dies vereinfacht das Debuggen funktionieren, obwohl das Verhalten unterscheidet sich von Multi-Prozess, die parallele Ausführung von Funktionen in der Wolke.
--export-on-exit= Optional. Verwenden Sie mit der Authentifizierung, Wolke Firestor, Echtzeit-Datenbank oder Cloud Storage-Emulator. Anweisen , den Emulator (en) auf Export von Daten in ein Verzeichnis beim Abschalten auftritt, wie für den beschriebenen emulators:export . Das Exportverzeichnis kann mit diesem Flag angegeben werden: firebase emulators:start --export-on-exit=./saved-data . . Wenn --import verwendet wird, Versäumnisse der Exportpfad zu derselben; Zum Beispiel: firebase emulators:start --import=./data-path --export-on-exit . . Schließlich, wenn gewünscht, passieren verschiedene Verzeichnispfade zum --import und --export-on-exit Flags.
--import= import_directory Optional. Verwenden Sie mit der Authentifizierung, Wolke Firestor, Echtzeit-Datenbank oder Cloud Storage-Emulator. Importieren von Daten gespeichert unter Verwendung der --export-on-exit Startoption oder die emulators:export Befehls an eine laufenden Authentifizierung, Wolke Firestor, Echtzeit - Datenbank oder Cloud Storage - Emulator - Instanz. Alle Daten zur Zeit in Emulator Speicher werden überschrieben.
--ui Optional. Führen Sie den Emulator UI während der Ausführung.

Die firebase emulators:exec Methode ist in der Regel besser geeignet für die kontinuierliche Integration Workflows.

Export und Import-Emulator Daten

Sie können als gemeinsam nutzbaren, gemeinsamer Basisdatensatz Daten von der Authentifizierung, Wolke Firestor, Echtzeit-Datenbank und Cloud Storage Emulatoren Verwendung exportieren. Diese Datensätze können eingeführt werden , um die Verwendung von --import Flag, wie oben beschrieben.

Emulatoren: export export_directory

Authentifizierung, Wolke Firestor, Echtzeit - Datenbank oder Cloud Storage - Emulator . Exportieren von Daten aus einer Wolke Firestor, Realtime-Datenbank oder Cloud Storage-Emulator-Instanz ausgeführt wird. Die angegebene export_directory wird erstellt, wenn es nicht bereits vorhanden ist . Wenn das angegebene Verzeichnis vorhanden ist, werden Sie zur Bestätigung aufgefordert werden, dass die bisherigen Exportdaten überschrieben werden sollen. Sie können diese Aufforderung mit der --force Flagge überspringen. Das Exportverzeichnis enthält eine Daten - Manifest - Datei, firebase-export-metadata.json .

Sie können die Emulatoren Exportdaten automatisch anweisen , wenn sie Abschaltung die Verwendung --export-on-exit Flags beschrieben.

Integrieren Sie mit Ihrem CI-System

Laufende containerisiert Emulator Suite Bilder

Installation und Konfiguration der Emulator Suite mit Containern in einem typischen CI-Setup ist einfach.

Es gibt ein paar Probleme Anmerkung:

  • JAR - Dateien werden bei installiert und zwischengespeichert ~/.cache/firebase/emulators/ .

    • Möglicherweise möchten Sie diesen Pfad zu Ihrem CI-Cache-Konfiguration hinzuzufügen, um wiederholte Downloads zu vermeiden.
  • Wenn Sie keine haben firebase.json Datei in Ihrem Repository, müssen Sie ein Befehlszeilenargument der Add - emulators:start oder emulators:exec Befehl zu spezifizieren , die Emulatoren gestartet werden sollen. Zum Beispiel,
    --only functions,firestore .

Generieren Sie eine Auth-Token (Hosting-Emulator nur)

Wenn Ihre kontinuierliche Integration Workflows verlassen Firebase Hosting, dann müssen Sie sich einloggen einen Token , um mit laufen firebase emulators:exec . Die anderen Emulatoren benötigen keine Anmeldung.

Ein Token, führen zu generieren firebase login:ci auf Ihrer lokalen Umgebung; sollte dies nicht von einem CI-System durchgeführt werden. Folgen Sie den Anweisungen zu authentifizieren. Sie sollten diesen Schritt nur einmal pro Projekt ausführen müssen, da das Token gültig sein wird, über aufbaut. Das Token sollte wie ein Kennwort behandelt werden; stellen Sie sicher, wird geheim gehalten.

Wenn Ihr CI - Umgebung können Sie Umgebungsvariablen angeben , die in den Build - Skripte verwendet werden kann, einfach eine Umgebungsvariable erstellen genannt FIREBASE_TOKEN , wobei der Wert der Zugriffstoken String sein. Die Firebase CLI abholt automatisch die FIREBASE_TOKEN Umgebungsvariable und die Emulatoren richtig beginnen.

Als letztes Mittel können Sie gehören einfach das Token in Ihrem Build-Skript, aber stellen Sie sicher, dass nicht vertrauenswürdige Parteien haben keinen Zugang. Aus diesem hartcodierte Ansatz, können Sie hinzufügen --token "YOUR_TOKEN_STRING_HERE" auf die firebase emulators:exec Befehl.

Verwenden des Emulators Hub REST API

Liste läuft Emulatoren

Um die aktuell laufenden Emulatoren Liste, eine senden GET - Anforderung an den /emulators Endpunkt des Emulator Hub.

curl localhost:4400/emulators

Das Ergebnis wird ein JSON-Objekt sein Auflistung alle laufenden Emulatoren und ihre Host / Port-Konfiguration, zum Beispiel:

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

Aktivieren / Deaktivieren Hintergrund Funktion Trigger

In einigen Situationen müssen Sie vorübergehend deaktivieren lokale Funktion und Erweiterung Trigger. Zum Beispiel können Sie alle Daten in der Cloud Firestore - Emulator zu löschen , ohne Auslösung onDelete Funktionen , die in der Cloud - Funktionen oder Erweiterungen Emulatoren laufen.

So deaktivieren Sie vorübergehend lokale Funktion Trigger, ein senden PUT Anfrage an die /functions/disableBackgroundTriggers Endpunkt der Emulator Hub.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

Das Ergebnis wird ein JSON-Objekt sein, den aktuellen Zustand Detaillierung.

{
  "enabled": false
}

So aktivieren Sie lokale Funktion Auslöser , nachdem sie deaktiviert wurden, senden Sie eine PUT Anfrage an den /functions/enableBackgroundTriggers Endpunkt des Emulator Hub.

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

Das Ergebnis wird ein JSON-Objekt sein, den aktuellen Zustand Detaillierung.

{
  "enabled": true
}

Emulator SDK-Integrationen

Die Tabellen in diesem Abschnitt angeben, welche Emulatoren von Client und Admin SDKs unterstützt werden. Künftige Mittel Emulator Unterstützung ist geplant , aber noch nicht verfügbar.

Client SDK Verfügbarkeit

Android Apple - Plattformen Netz Firebase UI
Android
Firebase UI
iOS
Firebase UI
Netz
Echtzeit-Datenbank 19.4.0 7.2.0 8.0.0 6.4.0 Zukunft N / A
Cloud Firestor 21.6.0 7.2.0 8.0.0 6.4.0 Zukunft N / A
Authentifizierung 20.0.0 7.0.0 8.0.0 7.0.0 Zukunft Zukunft
Cloud Storage 20.0.0 8.0.0 8.4.0 N / A N / A N / A
Cloud-Funktionen 19.1.0 7.2.0 8.0.0 N / A N / A N / A
Hosting N / A N / A N / A N / A N / A N / A
Erweiterungen N / A N / A N / A N / A N / A N / A

Admin SDK Verfügbarkeit

Knoten Java Python gehen
Echtzeit-Datenbank 8.6.0 6.10.0 2.18.0 Zukunft
Cloud Firestor 8.0.0 6.10.0 3.0.0 1.0.0
Authentifizierung 9.3.0 7.2.0 5.0.0 4.2.0
Cloud Storage 9.8.0 Zukunft Zukunft Zukunft
Cloud-Funktionen N / A N / A N / A N / A
Hosting N / A N / A N / A N / A
Erweiterungen N / A N / A N / A N / A