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:
Um die Emulator Suite zu installieren:
- 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
- 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
- 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 bearbeitefirebase.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.
| ||||||||||||
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.
|
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 Sie können die Emulatoren Exportdaten automatisch anweisen , wenn sie Abschaltung die Verwendung |
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
oderemulators: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 |