Манифест расширений — это список экземпляров расширений и их конфигураций. С помощью манифеста вы можете:
- Поделитесь своей конфигурацией расширений с другими
- Скопируйте конфигурацию расширений между разными проектами (например, из промежуточного проекта в рабочий проект).
- Разверните все ваши расширения одновременно
- Проверьте, как ваши расширения работают с вашим приложением, используя Firebase Local Emulator Suite.
- Зафиксируйте конфигурацию ваших расширений в системе управления версиями
- Включите расширения в конвейер CI/CD
Манифест расширений состоит из двух частей:
Раздел
extensions
вашегоfirebase.json
, который представляет собой сопоставление идентификатора экземпляра со ссылкой на версию расширения. Например:{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }
.env
, содержащие конфигурацию для каждого из ваших экземпляров расширения, в подкаталогеextensions/
вашего каталога проекта Firebase. Например, экземплярstorage-resize-images
может иметь файл.env
, подобный следующему:IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.appspot.com IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Создать манифест расширений
Существует три способа создания манифеста расширений:
- Управляйте своим манифестом расширений с помощью интерфейса командной строки Firebase
- Экспорт конфигурации расширений проекта
- Отредактируйте файлы манифеста вручную
Ниже описаны первые два метода.
Управляйте своим манифестом расширений с помощью интерфейса командной строки Firebase
Вы можете запускать большинство команд ext:
Firebase CLI с параметром --local
для обновления манифеста расширений без фактического изменения текущей конфигурации проекта.
Например:
firebase ext:install --local firebase/firestore-bigquery-export
Выполнение приведенной выше команды предложит вам настроить последнюю версию расширения firebase/firestore-bigquery-export
и сохранить конфигурацию в манифесте, но не развернет конфигурацию в вашем проекте.
Вот еще несколько примеров команд, которые изменяют манифест расширений:
# 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
Экспорт конфигурации расширений проекта
Чтобы сохранить текущую конфигурацию расширений проекта в манифест, выполните следующие действия:
- Если вы еще этого не сделали, настройте интерфейс командной строки Firebase.
- Из приглашения оболочки перейдите в каталог проекта. (Каталог вашего проекта содержит файл
firebase.json
). - Запустите команду
ext:export
:firebase ext:export
Команда ext:export
добавит раздел extensions
в файл firebase.json
. Кроме того, команда ext:export
создает каталог extensions
, содержащий файл .env
для каждого установленного вами экземпляра расширения. Эти файлы содержат параметры конфигурации для каждого экземпляра.
Протестируйте конфигурацию расширений с помощью Firebase Local Emulator Suite.
После того как вы добавили несколько экземпляров расширений в манифест расширений, вы можете протестировать их с помощью Local Emulator Suite.
Запустите пакет локального эмулятора :
- Чтобы запустить Emulator Suite в интерактивном режиме, запустите:
firebase emulators:start
- Чтобы запустить Emulator Suite и выполнить тестовый скрипт, запустите:
firebase emulators:exec my-test.sh
- Чтобы запустить Emulator Suite в интерактивном режиме, запустите:
Теперь, если у вас есть экземпляры расширений, указанные в манифесте, Local Emulator Suite загрузит исходный код этих расширений в ~/.cache/firebase/extensions
. После того, как они будут загружены, запустится Local Emulator Suite, и вы сможете активировать любые фоновые функции расширений и подключить свое приложение к набору Emulator, чтобы проверить их интеграцию с вашим приложением.
Развертывание конфигурации расширений в проекте
Добавив несколько экземпляров расширения в манифест расширения, вы можете развернуть его в проекте с помощью интерфейса командной строки Firebase. При развертывании с манифестом расширений вы одновременно устанавливаете, обновляете и настраиваете все экземпляры расширения в манифесте в проекте.
Чтобы развернуть манифест расширений:
- В приглашении оболочки перейдите в каталог, содержащий сохраненную конфигурацию расширений. (Это каталог, содержащий
firebase.json
. Если вы только что запустилиext:export
, вы уже находитесь в правильном каталоге.) - Запустите команду
deploy
. Если вы хотите развернуть расширения в проекте, отличном от текущего, также укажите--project=
:firebase deploy --only extensions –-project=YOUR_PROJECT_ID
Команда deploy
проверит конфигурацию каждого экземпляра, спросит, хотите ли вы удалить какие-либо экземпляры расширения из вашего целевого проекта, которые не указаны в firebase.json
, а затем развернет все ваши экземпляры расширения.
Конфигурации расширений для конкретных проектов
Сохраненные конфигурации расширений можно использовать для развертывания в нескольких разных проектах: например, в промежуточном и рабочем проектах. При этом значения некоторых параметров могут быть разными для каждого проекта. Файлы .env
для конкретных проектов делают это возможным:
- Поместите значения параметров, которые различаются между проектами, в
extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
- Поместите значения общих параметров в
extensions/ EXTENSION_INSTANCE_ID .env
.
Иногда вам может понадобиться использовать другое значение параметра при эмуляции ваших расширений: например, вы можете предоставить тестовый ключ API вместо производственного. Поместите эти параметры в файл .local
:
- Поместите несекретные параметры, которые вы хотите использовать во время эмуляции, в
extensions/ EXTENSION_INSTANCE_ID .env.local
- Поместите секретные значения параметров в
extensions/ EXTENSION_INSTANCE_ID .secret.local