Zanim zaczniesz używać emulatora Extensions w aplikacji, upewnij się, że rozumiesz ogólny przepływ pracy w Firebase Local Emulator Suite oraz że zainstalowano i skonfigurowano Local Emulator Suite i zapoznano się z poleceniami interfejsu wiersza poleceń.
W tym przewodniku zakładamy też, że znasz Firebase Extensions i wiesz, jak używać ich w aplikacjach w Firebase.
Co mogę zrobić za pomocą emulatora Extensions?
Dzięki emulatorowi Extensions możesz instalować rozszerzenia i zarządzać nimi w bezpiecznym środowisku lokalnym oraz lepiej poznać ich możliwości, minimalizując jednocześnie koszty rozliczeniowe. Emulator uruchamia funkcje rozszerzenia lokalnie, w tym funkcje wywoływane przez zdarzenia w tle, korzystając z emulatorów Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication i Pub/Sub, oraz funkcje wywoływane przez Eventarc zaimplementowane w Cloud Functions w wersji 2.
Wybierz projekt w Firebase
Firebase Local Emulator Suite emuluje produkty w ramach jednego projektu w Firebase.
Aby wybrać projekt, którego chcesz użyć, przed uruchomieniem emulatorów uruchom w interfejsie wiersza poleceń polecenie firebase use w katalogu roboczym. Możesz też przekazać flagę --project do każdego polecenia emulatora.
Local Emulator Suite obsługuje emulację rzeczywistych projektów w Firebase i projektów demonstracyjnych.
| Typ projektu | Funkcje | Używanie z emulatorami |
|---|---|---|
| real |
Rzeczywisty projekt w Firebase to taki, który został przez Ciebie utworzony i skonfigurowany (najprawdopodobniej w konsoli Firebase). Rzeczywiste projekty zawierają aktywne zasoby, takie jak instancje baz danych, zasobniki, funkcje lub inne zasoby skonfigurowane dla danego projektu Firebase. |
Podczas pracy z prawdziwymi projektami w Firebase możesz uruchamiać emulatory dowolnych lub wszystkich obsługiwanych usług. W przypadku usług, których nie emulujesz, aplikacje i kod będą wchodzić w interakcje z aktywnym zasobem (instancją bazy danych, zasobnikiem na dane, funkcją itp.). |
| Prezentacja |
Projekt demonstracyjny Firebase nie ma prawdziwej konfiguracji Firebase ani aktywnych zasobów. Dostęp do tych projektów można zwykle uzyskać za pomocą programów ćwiczeń i innych samouczków. Identyfikatory projektów demonstracyjnych mają prefiks |
Podczas pracy z projektami w Firebase w wersji demonstracyjnej aplikacje i kod wchodzą w interakcje wyłącznie z emulatorami. Jeśli aplikacja spróbuje wejść w interakcję z zasobem, dla którego emulator nie jest uruchomiony, kod nie zadziała. |
Zalecamy korzystanie z projektów demonstracyjnych, gdy tylko jest to możliwe. W ten sposób możesz zapewnić im dostęp do tych korzyści:
- łatwiejsza konfiguracja, ponieważ możesz uruchamiać emulatory bez tworzenia projektu w Firebase;
- Większe bezpieczeństwo, ponieważ jeśli kod przypadkowo wywoła nieemulowane zasoby (produkcyjne), nie ma możliwości zmiany danych, użycia ani naliczenia opłat.
- Lepsza obsługa offline, ponieważ nie trzeba mieć dostępu do internetu, aby pobrać konfigurację pakietu SDK.
Instalowanie i ocenianie rozszerzenia
Użycie emulatora Extensions do oceny, czy rozszerzenie spełnia Twoje potrzeby, jest proste.
Załóżmy, że interesuje Cię rozszerzenie Trigger Email (firestore-send-email), chociaż poniższy proces dotyczy dowolnego rozszerzenia. W przypadku uruchomienia z lokalnymi emulatorami rozszerzenie Trigger Email automatycznie użyje emulatorów Cloud Firestore i Cloud Functions.
Aby ocenić rozszerzenie lokalnie:
Dodaj rozszerzenie do lokalnego pliku manifestu rozszerzeń. Plik manifestu rozszerzeń to lista instancji rozszerzeń i ich konfiguracji.
firebase ext:install --local firebase/firestore-send-email
Uruchomienie powyższego polecenia spowoduje wyświetlenie prośby o skonfigurowanie najnowszej wersji rozszerzenia
firebase/firestore-send-emaili zapisanie konfiguracji w pliku manifestu, ale nie spowoduje wdrożenia konfiguracji w projekcie. Więcej informacji znajdziesz w artykule Zarządzanie konfiguracją rozszerzeń za pomocą plików manifestu.Uruchom Local Emulator Suite w zwykły sposób.
firebase emulators:start
Teraz, używając instancji rozszerzenia firestore-send-email wymienionej w pliku manifestu, Local Emulator Suite pobierze kod źródłowy tego rozszerzenia do ~/.cache/firebase/extensions. Po pobraniu źródeł uruchomi się Local Emulator Suite i będzie można aktywować dowolne funkcje rozszerzenia wywoływane w tle oraz połączyć aplikację z Local Emulator Suite, aby przetestować ich integrację z aplikacją.
Możesz użyć Emulator Suite UI, aby dodać dane do kolekcji dokumentów e-mail i skonfigurować inne zasoby backendu zgodnie z wymaganiami rozszerzenia Trigger Email.
Możesz też w przypadku nieinteraktywnych środowisk testowych, takich jak przepływy pracy ciągłej integracji, napisać skrypt testowy do oceny rozszerzenia, który m.in. wypełnia niezbędne dane Cloud Firestore i wywołuje funkcje. Następnie wywołaj Local Emulator Suite, aby wykonać skrypt testowy:
firebase emulators:exec my-test.shCzym różni się testowanie za pomocą emulatora Extensions od testowania w środowisku produkcyjnym
Emulator Extensions umożliwia testowanie rozszerzeń w sposób, który bardzo przypomina środowisko produkcyjne. Istnieją jednak pewne różnice w porównaniu z zachowaniem w środowisku produkcyjnym.
Cloud IAM
Pakiet emulatora Firebase nie próbuje replikować ani uwzględniać żadnych zachowań związanych z uprawnieniami podczas działania. Emulatory przestrzegają podanych reguł zabezpieczeń Firebase, ale w sytuacjach, w których zwykle używany jest protokół IAM, np. do ustawiania konta usługi wywołującego Cloud Functions, a tym samym uprawnień, emulatora nie można skonfigurować i będzie on używać konta dostępnego globalnie na komputerze używanym do programowania, podobnie jak w przypadku bezpośredniego uruchamiania skryptu lokalnego.
Ograniczenie typu aktywacji
Obecnie Firebase Local Emulator Suite obsługuje tylko funkcje wywoływane przez żądania HTTP, niestandardowe reguły zdarzeń Eventarc dla rozszerzeń oraz funkcje wywoływane przez zdarzenia w tle dla Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication i Pub/Sub. Aby ocenić rozszerzenia, które używają innych typów funkcji aktywowanych, musisz zainstalować rozszerzenie w testowym projekcie w Firebase.
Co dalej?
- Aby obejrzeć wybrane filmy i szczegółowe instrukcje, skorzystaj z playlisty szkoleniowej dotyczącej emulatorów Firebase.