Манифест расширений – это список экземпляров расширений и их конфигураций. С помощью манифеста вы можете:
- Как поделиться конфигурацией расширений с другими пользователями
- Копировать конфигурацию расширений между разными проектами (например, из промежуточного проекта в рабочий).
- Развертывание всех расширений одновременно
- Проверьте, как расширения работают с вашим приложением, используя 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}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
Как создать манифест расширения
Создать манифест расширения можно тремя способами:
- Управление манифестом расширений с помощью интерфейса командной строки Firebase
- Как экспортировать конфигурацию расширений проекта
- Как изменить файлы манифеста вручную
Ниже описаны первые два способа.
Управление манифестом расширений с помощью интерфейса командной строки Firebase
Большинство команд ext: интерфейса командной строки Firebase можно выполнять с параметром --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.
Запустите 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 Suite, чтобы протестировать интеграцию.
Как развернуть конфигурацию расширений в проекте
Добавив экземпляры расширения в манифест расширения, вы можете развернуть его в проекте с помощью интерфейса командной строки 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.