Pakiet emulatorów lokalnych Firebase można zainstalować i skonfigurować dla różnych środowisk testowych i testowych, od jednorazowych sesji prototypowych po w środowiskach produkcyjnych w trybie ciągłej integracji.
Instalowanie Pakietu emulatorów lokalnych
Przed zainstalowaniem Pakietu emulatorów będziesz potrzebować:
Aby zainstalować Pakiet emulatorów:
- Zainstaluj interfejs wiersza poleceń Firebase.
Jeśli nie masz jeszcze zainstalowanego interfejsu wiersza poleceń Firebase,
zainstaluj ją teraz.
Aby korzystać z Pakietu emulatorów, potrzebujesz interfejsu wiersza poleceń w wersji 8.14.0 lub nowszej. Dostępne opcje
aby sprawdzić, która wersja jest zainstalowana, używając następującego polecenia:
firebase --version
- Zainicjuj bieżący katalog roboczy.
jako projekt Firebase, postępując zgodnie z instrukcjami na ekranie, aby określić,
usług do wykorzystania:
firebase init
- Skonfiguruj Pakiet emulatorów. To polecenie uruchamia kreatora konfiguracji, który
pozwala wybrać emulatory, pobierz odpowiedni emulator
plików binarnych i ustaw porty emulatora, jeśli wartości domyślne są nieodpowiednie.
firebase init emulators
Po zainstalowaniu emulatora nie są sprawdzane żadne aktualizacje ani automatyczne pobieranie będzie możliwe, dopóki nie zaktualizujesz interfejsu wiersza poleceń Firebase.
Skonfiguruj Pakiet emulatorów
Opcjonalnie możesz skonfigurować emulatory porty sieciowe i ścieżka do zabezpieczeń
Definicje reguł w pliku firebase.json
:
- Aby zmienić porty emulatora, uruchom polecenie
firebase init emulators
lub wprowadź zmianyfirebase.json
ręcznie. - Zmień ścieżkę do definicji reguł zabezpieczeń, edytując plik
firebase.json
ręcznie.
Jeśli nie skonfigurujesz tych ustawień, emulatory będą nasłuchiwać porty domyślne, a Cloud Firestore, Realtime Database i Cloud Storage for Firebase emulatory będą działać z otwartym zabezpieczeniami danych.
Polecenie | Opis |
---|---|
emulatory init | Uruchom kreatora inicjowania emulatora. Określ emulatory do zainstalowania i opcjonalnie określ ustawienia portu emulatora. Element init emulators nie jest szkodliwy. zaakceptowanie wartości domyślnych pozwoli zachować bieżącą konfigurację emulatora. |
Konfiguracja portu
Każdy emulator wiąże się z innym portem na komputerze z preferowaną wartością domyślną .
Emulator | Domyślny port |
---|---|
Authentication | 9099 |
Emulator Suite UI | 4000 |
Cloud Functions | 5001 |
Eventarc | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Cloud Storage for Firebase | 9199 |
Firebase Hosting | 5000 |
Pub/Sub | 8085 |
Konfiguracja identyfikatora projektu
W zależności od sposobu wywoływania emulatorów możesz uruchomić wiele instancji emulatora korzystającego z różnych identyfikatorów projektów Firebase lub wielu instancji emulatora. dla danego identyfikatora projektu. W takich przypadkach instancje emulatora działają w w osobnym środowisku.
Ogólnie dobrze jest ustawić jeden identyfikator projektu dla wszystkich emulatorów. Emulator Suite UI, różne emulatory usług i inne funkcje uruchomione instancje danego emulatora mogą komunikować się prawidłowo we wszystkich przypadków.
Local Emulator Suite wyświetla ostrzeżenia, gdy wykryje wiele identyfikatorów projektów w
w środowisku, ale możesz to zmienić, ustawiając parametr
singleProjectMode
klucz do false
w: firebase.json
.
Deklaracje dotyczące identyfikatorów projektów znajdziesz tutaj:
- Domyślny projekt w wierszu poleceń. Domyślnie identyfikator projektu będzie
zostanie pobrana podczas uruchamiania z projektu wybranego przy użyciu
firebase init
lubfirebase use
Aby wyświetlić listę projektów (i sprawdzić, który z nich został wybrany) użyj funkcjifirebase projects:list
. - Testy jednostkowe reguł. Identyfikator projektu jest często określony w wywołaniach reguł.
Metody biblioteki testów jednostkowych
initializeTestEnvironment
lubinitializeTestApp
. - Flaga wiersza poleceń
--project
. Przekazano interfejs wiersza poleceń Firebase Flaga--project
zastępuje projekt domyślny. Musisz upewnić się, że wartość flagi odpowiada identyfikatorowi projektu w testach jednostkowych i inicjowaniu aplikacji.
Sprawdź też ustawione konfiguracje identyfikatorów projektu na poziomie platformy skonfigurować platformy Apple, Projekty na Androida i internet.
Konfiguracja reguł zabezpieczeń
Emulatory przejmą konfigurację reguł zabezpieczeń z: database
,
Klucze konfiguracyjne firestore
i storage
w 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": {
"singleProjectMode": false, // do not warn on detection of multiple project IDs
"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"
}
}
}
Określanie opcji Javy
Emulator Realtime Database i Cloud Firestore oraz część
Emulator Cloud Storage for Firebase jest oparty na Javie, którą można dostosować
z flagami JVM za pomocą zmiennej środowiskowej JAVA_TOOL_OPTIONS
.
Na przykład jeśli wystąpią błędy związane z przestrzenią sterty Java, możesz zwiększyć maksymalny rozmiar stosu Java do 4 GB:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
Możesz podać wiele flag w cudzysłowach rozdzielonych spacjami, na przykład
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
Flagi te wpływają tylko na zasoby
oparte na Javie
emulatorów i nie mają żadnego wpływu na inne części
Interfejs wiersza poleceń Firebase, taki jak Emulator Suite UI.
Uruchamianie emulatorów
Możesz uruchamiać emulatory, dopóki nie zakończą ich ręcznie. Możesz też uruchamiać je przez cały czas przez czas wybranego skryptu testowego, a następnie automatycznie się wyłączy.
Polecenie | Opis | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emulators:start | Uruchom emulatory usług Firebase skonfigurowanych w firebase.json .
Procesy emulatora będą działać, dopóki nie zostaną wyraźnie zatrzymane. Łączę
emulators:start pobierze emulatory do ~/.cache/firebase/emulators/, jeśli
nie są jeszcze zainstalowane.
|
||||||||||||
emulators:exec scriptpath | Po uruchomieniu emulatorów usług Firebase uruchom skrypt na stronie scriptpath
skonfigurowano w: firebase.json . Procesy emulatora zatrzymają się automatycznie, gdy
zakończył działanie skryptu.
|
Metoda firebase emulators:exec
jest ogólnie bardziej odpowiednia w przypadku
w trybie ciągłej integracji.
Eksportowanie i importowanie danych emulatora
Możesz eksportować dane z usług Authentication, Cloud Firestore, Realtime Database oraz
Emulatory funkcji Cloud Storage for Firebase, których można używać jako wspólnych danych bazowych
ustawiony. Te zbiory danych można importować za pomocą flagi --import
,
opisane powyżej.
emulators:export export_directory |
Emulator Authentication, Cloud Firestore, Realtime Database lub Cloud Storage for Firebase.
Eksportuj dane z aktywnego Cloud Firestore, Realtime Database lub Cloud Storage for Firebase
z instancji emulatora. W takim przypadku zostanie utworzony określony element
Możesz polecić emulatorom automatyczne eksportowanie danych po wyłączeniu za pomocą
Flagi |
Integracja z systemem CI
Uruchamianie obrazów skonteneryzowanego Pakietu emulatorów
Instalacja i konfiguracja Pakietu emulatorów z kontenerami w typowa konfiguracja CI jest prosta.
Pamiętaj o kilku kwestiach:
Pliki JAR są instalowane i przechowywane w pamięci podręcznej w
~/.cache/firebase/emulators/
.- Możesz dodać tę ścieżkę do konfiguracji pamięci podręcznej CI, aby uniknąć wielokrotnie pobierać pliki.
Jeśli w repozytorium nie ma pliku
firebase.json
, musisz dodać argument wiersza poleceń do poleceniaemulators:start
lubemulators:exec
aby określić, które emulatory mają zostać uruchomione. Przykład:--only functions,firestore
.
Generowanie tokena uwierzytelniania (tylko emulator hostowania)
Jeśli Twoje przepływy pracy ciągłej integracji opierają się na Firebase Hosting,
będzie musiał zalogować się za pomocą tokena, aby uruchomić firebase emulators:exec
.
inne emulatory nie wymagają logowania.
Aby wygenerować token, uruchom firebase login:ci
w środowisku lokalnym. nie należy tego robić w ramach systemu CI. Wykonaj instrukcje uwierzytelniania. Ten krok musisz wykonać tylko raz w każdym projekcie, ponieważ token będzie ważny we wszystkich kompilacjach. Token powinien być traktowany jak hasło. zabezpieczysz go w tajemnicy.
Jeśli środowisko CI umożliwia określenie zmiennych środowiskowych, których można użyć
używanych w skryptach kompilacji, wystarczy utworzyć zmienną środowiskową o nazwie
FIREBASE_TOKEN
, gdzie wartością jest ciąg tokena dostępu. Interfejs wiersza poleceń Firebase
automatycznie pobierze zmienną środowiskową FIREBASE_TOKEN
oraz
uruchamiają się prawidłowo.
W ostateczności możesz po prostu umieścić token w skrypcie kompilacji,
aby zapewnić, że niezaufane osoby nie będą miały do niego dostępu. W przypadku tego kodu
możesz dodać --token "YOUR_TOKEN_STRING_HERE"
do
firebase emulators:exec
.
Używanie interfejsu API REST centrum emulatorów
Wyświetlenie listy uruchomionych emulatorów
Aby wyświetlić listę obecnie uruchomionych emulatorów, wyślij żądanie GET
do /emulators
punktu końcowego centrum emulatorów.
curl localhost:4400/emulators
W efekcie powstanie obiekt JSON z listą wszystkich uruchomionych emulatorów i ich konfigurację hosta/portu, na przykład:
{
"hub":{
"name": "hub",
"host": "localhost",
"port": 4400
},
"functions": {
"name": "functions",
"host": "localhost",
"port": 5001
}
"firestore": {
"name": "firestore",
"host": "localhost",
"port": 8080
}
}
Włączanie i wyłączanie aktywatorów funkcji działających w tle
Czasem konieczne jest tymczasowe wyłączenie funkcji lokalnej
reguły rozszerzenia. Możesz na przykład usunąć wszystkie dane
emulatorowi Cloud Firestore bez aktywowania funkcji onDelete
, które
są uruchomione w emulatorach Cloud Functions lub Extensions.
Aby tymczasowo wyłączyć aktywatory funkcji lokalnych, wyślij żądanie PUT
do
Punkt końcowy /functions/disableBackgroundTriggers
centrum emulatorów.
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
W rezultacie powstanie obiekt JSON zawierający szczegółowe informacje na temat bieżącego stanu.
{
"enabled": false
}
Aby włączyć aktywatory funkcji lokalnych po ich wyłączeniu, wyślij PUT
żądanie do punktu końcowego /functions/enableBackgroundTriggers
emulatora
Treści regularne.
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
W rezultacie powstanie obiekt JSON zawierający szczegółowe informacje na temat bieżącego stanu.
{
"enabled": true
}
Integracje pakietu SDK emulatorów
Tabele w tej sekcji wskazują, które emulatory są obsługiwane przez klienta i pakiety Admin SDK. Przyszły oznacza, że obsługa emulatora jest planowana, ale nie jest to jeszcze możliwe. i dostępności informacji.
Dostępność pakietu SDK klienta
Android | Platformy Apple | Sieć |
Interfejs Firebase Android |
Interfejs Firebase iOS |
Interfejs Firebase Strona internetowa |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | Przyszła | Nie dotyczy |
Cloud Firestore | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | Przyszła | Nie dotyczy |
Authentication | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | Przyszła | 4.7.2 |
Cloud Storage for Firebase | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | Nie dotyczy |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | Nie dotyczy | Nie dotyczy | Nie dotyczy |
Hosting | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy |
Extensions | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy |
Dostępność pakietu Admin SDK
Węzeł | Java | Python | Go | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | Przyszła |
Cloud Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
Authentication | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Cloud Storage for Firebase | 9.8.0 | Przyszła | Przyszła | Przyszła |
Cloud Functions | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy |
Hosting | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy |
Extensions | Nie dotyczy | Nie dotyczy | Nie dotyczy | Nie dotyczy |