Манифест расширений — это список экземпляров расширений и их конфигураций. С помощью манифеста вы можете:
- Поделитесь конфигурацией своих расширений с другими пользователями.
- Скопируйте конфигурацию расширений между различными проектами (например, из тестового проекта в производственный).
- Разверните все свои расширения одновременно.
- Проверьте, как ваши расширения работают с вашим приложением, используя 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 CLI.
- Экспорт конфигурации расширений проекта
- Отредактируйте файлы манифеста вручную.
Первые два метода описаны ниже.
Управляйте манифестом расширений с помощью Firebase CLI.
Большинство команд 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 CLI.
- В командной строке перейдите в каталог проекта. (В каталоге вашего проекта находится файл
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 - Чтобы запустить набор эмуляторов и выполнить тестовый скрипт, выполните команду:
firebase emulators:exec my-test.sh
- Для интерактивного запуска Emulator Suite выполните команду:
Теперь, если в вашем манифесте указаны экземпляры расширений, Local Emulator Suite загрузит исходный код этих расширений в ~/.cache/firebase/extensions . После загрузки Local Emulator Suite запустится, и вы сможете запускать любые фоновые функции расширений и подключать ваше приложение к Emulator Suite для проверки их интеграции с вашим приложением.
Разверните конфигурацию расширений в проекте.
После добавления экземпляров расширений в манифест расширений вы можете развернуть их в проекте с помощью Firebase CLI. При развертывании с использованием манифеста расширений вы устанавливаете, обновляете и настраиваете все экземпляры расширений из манифеста одновременно в проекте.
Для развертывания манифеста расширений:
- В командной строке перейдите в каталог, содержащий сохраненные файлы конфигурации расширений. (Это каталог, в котором находится файл
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