Plik manifestu rozszerzeń to lista instancji rozszerzeń i ich konfiguracji. Za pomocą pliku manifestu możesz:
- Udostępnianie konfiguracji rozszerzeń innym osobom
- Skopiuj konfigurację rozszerzeń między różnymi projektami (na przykład z projektu testowego do projektu produkcyjnego)
- Wdrażanie wszystkich rozszerzeń jednocześnie
- Sprawdź, jak rozszerzenia współpracują z Twoją aplikacją, korzystając z Pakietu emulatorów lokalnych Firebase.
- Przekazywanie konfiguracji rozszerzeń do kontroli źródła
- Uwzględnij rozszerzenia w potoku CI/CD
Plik manifestu rozszerzeń składa się z 2 części:
Sekcja
extensions
identyfikatorafirebase.json
, która jest mapą identyfikatora instancji na odniesienie 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", } }
.env
, które zawierają konfigurację poszczególnych instancji rozszerzeń, w podkataloguextensions/
katalogu projektu Firebase.storage-resize-images
może na przykład mieć plik.env
podobny do tego:IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.appspot.com IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Utwórz plik manifestu rozszerzeń
Plik manifestu rozszerzeń możesz utworzyć na 3 sposoby:
- Zarządzanie plikiem manifestu rozszerzeń za pomocą interfejsu wiersza poleceń Firebase
- Eksportowanie konfiguracji rozszerzeń projektu
- Ręczne edytowanie plików manifestu
Pierwsze dwie metody omówiono poniżej.
Zarządzanie plikiem manifestu rozszerzeń za pomocą interfejsu wiersza poleceń Firebase
Większość poleceń ext:
w interfejsie wiersza poleceń Firebase można uruchamiać za pomocą opcji --local
, aby zaktualizować plik manifestu rozszerzeń bez zmiany bieżącej konfiguracji projektu.
Przykład:
firebase ext:install --local firebase/firestore-bigquery-export
Po uruchomieniu powyższego polecenia wyświetli się prośba o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-bigquery-export
i zapisanie konfiguracji w pliku manifestu, ale nie wdrożysz konfiguracji w projekcie.
Oto kilka dodatkowych przykładów poleceń, które modyfikują plik manifestu 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ć w pliku manifestu bieżącą konfigurację rozszerzeń projektu, wykonaj te czynności:
- Skonfiguruj interfejs wiersza poleceń Firebase, jeśli jeszcze go nie masz.
- Z poziomu promptu powłoki przejdź do katalogu projektu. (Katalog projektu zawiera plik
firebase.json
). - Uruchom polecenie
ext:export
:firebase ext:export
Polecenie ext:export
spowoduje dodanie sekcji extensions
do pliku firebase.json
. Dodatkowo polecenie ext:export
tworzy katalog extensions
zawierający plik .env
dla każdej zainstalowanej instancji rozszerzenia. Pliki te zawierają parametry konfiguracji każdej instancji.
Testowanie konfiguracji rozszerzeń w Pakiecie emulatorów lokalnych Firebase
Po dodaniu instancji rozszerzeń do pliku manifestu możesz je przetestować za pomocą Pakietu emulatorów lokalnych.
Uruchom Pakiet emulatorów lokalnych
- Aby interaktywnie uruchomić Pakiet emulatorów, uruchom polecenie:
firebase emulators:start
- Aby uruchomić Pakiet emulatorów i wykonać skrypt testowy, uruchom polecenie
firebase emulators:exec my-test.sh
- Aby interaktywnie uruchomić Pakiet emulatorów, uruchom polecenie:
Jeśli w pliku manifestu są wymienione instancje rozszerzeń, Pakiet emulatorów lokalnych pobierze ich kod źródłowy do ~/.cache/firebase/extensions
. Po ich pobraniu uruchomi się Pakiet emulatorów lokalnych. Pozwoli Ci to aktywować dowolne z tych funkcji w tle oraz połączyć aplikację z pakietem emulatorów, aby przetestować ich integrację z aplikacją.
Wdrażanie konfiguracji rozszerzeń w projekcie
Po dodaniu instancji rozszerzenia do pliku manifestu możesz wdrożyć je w projekcie za pomocą interfejsu wiersza poleceń Firebase. Podczas wdrażania przy użyciu pliku manifestu rozszerzeń musisz jednocześnie zainstalować, zaktualizować i skonfigurować w projekcie wszystkie instancje rozszerzeń z pliku manifestu.
Aby wdrożyć plik manifestu rozszerzeń:
- Z poziomu promptu powłoki przejdź do katalogu zawierającego zapisaną konfigurację rozszerzeń. (W tym katalogu znajduje się
firebase.json
. Jeśli uruchomiłeś przed chwiląext:export
, jesteś już we właściwym katalogu). - Uruchom polecenie
deploy
. Jeśli chcesz wdrożyć rozszerzenia w projekcie innym niż bieżący, wpisz też--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
Polecenie deploy
sprawdzi każdą konfigurację instancji. Zapyta Cię, czy z projektu docelowego chcesz usunąć instancje rozszerzeń, których nie ma na liście w firebase.json
, a potem wdrożysz wszystkie instancje rozszerzeń.
Konfiguracje rozszerzeń związane z projektem
Zapisanych konfiguracji rozszerzeń można używać do wdrażania w wielu różnych projektach, na przykład w projekcie przejściowym i projekcie produkcyjnym. W takim przypadku niektóre wartości parametrów mogą być różne w każdym projekcie.
Dzięki plikom .env
dotyczącym konkretnego projektu jest to możliwe:
- Umieść w
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID
wartości parametrów, które różnią się między projektami - Umieść wartości udostępnianych parametrów w polu
extensions/EXTENSION_INSTANCE_ID.env
.
Czasami podczas emulacji rozszerzeń konieczne może być użycie innej wartości parametru, np. zamiast klucza produkcyjnego możesz podać testowy klucz interfejsu API. Umieść te parametry w pliku .local
:
- Umieść w
extensions/EXTENSION_INSTANCE_ID.env.local
parametry nietajne, których chcesz używać podczas emulacji - Umieść wartości parametrów obiektu tajnego w obiekcie
extensions/EXTENSION_INSTANCE_ID.secret.local