Manifest rozszerzeń to lista instancji rozszerzeń i ich konfiguracji. Dzięki manifestowi możesz:
- udostępniać konfigurację rozszerzeń innym osobom;
- kopiować konfigurację rozszerzeń między różnymi projektami (np. z projektu roboczego do projektu produkcyjnego);
- wdrażać wszystkie rozszerzenia naraz;
- testować działanie rozszerzeń w aplikacji za pomocą Firebase Local Emulator Suite
- przesyłać konfigurację rozszerzeń do systemu kontroli wersji;
- uwzględniać rozszerzenia w potoku CI/CD.
Manifest rozszerzeń składa się z 2 części:
sekcji
extensionsw plikufirebase.json, która jest mapą identyfikatorów instancji na odniesienia do wersji rozszerzenia. Przykład:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }plików
.envzawierających konfigurację każdej instancji rozszerzenia w podkataloguextensions/w katalogu projektu w Firebase. Na przykład instancja rozszerzeniastorage-resize-imagesmoże mieć plik.envo takiej zawartości:IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Tworzenie manifestu rozszerzeń
Manifest rozszerzeń można utworzyć na 3 sposoby:
- Zarządzaj plikiem manifestu rozszerzeń za pomocą wiersza poleceń Firebase.
- Eksportuj konfigurację rozszerzeń projektu.
- Ręcznie edytuj pliki manifestu.
Pierwsze 2 metody opisujemy poniżej.
Zarządzanie manifestem rozszerzeń za pomocą wiersza poleceń Firebase
Większość poleceń ext: wiersza poleceń Firebase możesz uruchomić z opcją --local, aby zaktualizować manifest rozszerzeń bez zmiany bieżącej konfiguracji projektu.
Przykład:
firebase ext:install --local firebase/firestore-bigquery-export
Uruchomienie powyższego polecenia spowoduje wyświetlenie prośby o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-bigquery-export i zapisanie konfiguracji w pliku manifestu, ale nie wdroży konfiguracji w projekcie.
Oto kilka innych przykładów poleceń, które modyfikują manifest rozszerzeń:
# 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
Eksportowanie konfiguracji rozszerzeń projektu
Aby zapisać bieżącą konfigurację rozszerzeń projektu w pliku manifestu:
- Jeśli jeszcze tego nie zrobisz, skonfiguruj wiersz poleceń Firebase
- W wierszu poleceń powłoki przejdź do katalogu projektu. (Katalog projektu zawiera plik
firebase.json). - Uruchom polecenie
ext:export:firebase ext:export
Polecenie ext:export doda sekcję extensions do pliku firebase.json. Dodatkowo polecenie ext:export utworzy katalog extensions zawierający plik .env dla każdej zainstalowanej instancji rozszerzenia. Te pliki zawierają parametry konfiguracji każdej instancji.
Testowanie konfiguracji rozszerzeń za pomocą Firebase Local Emulator Suite
Gdy dodasz do manifestu rozszerzeń kilka instancji rozszerzeń, możesz je przetestować za pomocą Local Emulator Suite.
-
- Aby uruchomić pakiet Emulator Suite interaktywnie, wpisz:
firebase emulators:start - Aby uruchomić Pakiet emulatorów i wykonać scenariusz testowania, wpisz:
firebase emulators:exec my-test.sh
- Aby uruchomić pakiet Emulator Suite interaktywnie, wpisz:
Jeśli w pliku manifestu masz instancje rozszerzeń, pakiet Local Emulator Suite
Local Emulator Suite pobierze kod źródłowy tych rozszerzeń do katalogu
~/.cache/firebase/extensions. Po pobraniu pakiet
Local Emulator Suite uruchomi się i będziesz mieć możliwość wywołania dowolnej funkcji rozszerzenia
uruchamianej w tle oraz połączenia aplikacji z pakietem Emulator
Suite, aby przetestować integrację z aplikacją.
Wdrażanie konfiguracji rozszerzeń w projekcie
Gdy dodasz do manifestu rozszerzeń kilka instancji rozszerzeń, możesz wdrożyć go w projekcie za pomocą wiersza poleceń Firebase. Gdy wdrożysz manifest rozszerzeń, zainstalujesz, zaktualizujesz i skonfigurujesz wszystkie instancje rozszerzeń w manifeście w projekcie naraz.
Aby wdrożyć manifest rozszerzeń:
- W wierszu poleceń przejdź do katalogu, w którym zapisano konfigurację rozszerzeń. (Jest to katalog zawierający plik
firebase.json. Jeśli właśnie uruchomiłeś polecenieext:export, jesteś już w odpowiednim katalogu). - Uruchom polecenie
deploy. Jeśli chcesz wdrożyć rozszerzenia w innym projekcie niż bieżący, podaj też parametr--project=:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
Polecenie deploy sprawdzi poprawność konfiguracji każdej instancji, zapyta, czy chcesz usunąć z projektu docelowego instancje rozszerzeń, których nie ma w pliku firebase.json, a następnie wdroży wszystkie instancje rozszerzeń.
Konfiguracje rozszerzeń specyficzne dla projektu
Zapisane konfiguracje rozszerzeń można wykorzystać do wdrożenia w wielu różnych projektach, np. w projekcie roboczym i produkcyjnym. W takim przypadku niektóre wartości parametrów mogą się różnić w zależności od projektu.
Umożliwiają to pliki .env specyficzne dla projektu:
- Wartości parametrów, które różnią się w zależności od projektu, umieść w pliku
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID. - Wspólne wartości parametrów umieść w pliku
extensions/EXTENSION_INSTANCE_ID.env.
Czasami podczas emulowania rozszerzeń możesz chcieć użyć innej wartości parametru, np. klucza API testowego zamiast produkcyjnego. Umieść te parametry w pliku .local:
- Parametry niebędące tajnymi, których chcesz używać podczas emulacji, umieść w
extensions/EXTENSION_INSTANCE_ID.env.local. - Tajne wartości parametrów umieść w pliku
extensions/EXTENSION_INSTANCE_ID.secret.local.