Вы можете выполнить локальное тестирование своего приложения перед развертыванием App Hosting с помощью эмулятора App Hosting , который является частью пакета локальных эмуляторов Firebase.
Прежде чем использовать эмулятор App Hosting , убедитесь, что вы понимаете общий рабочий процесс Firebase Local Emulator Suite , а также что вы установили и настроили Local Emulator Suite и просмотрели его команды CLI .
В этом разделе предполагается, что вы уже знакомы с App Hosting . При необходимости просмотрите введение App Hosting и другие материалы, которые помогут вам понять, как работает App Hosting .
Что я могу делать с помощью эмулятора App Hosting ?
Эмулятор App Hosting позволяет тестировать и совершенствовать веб-приложения локально. Это может упростить процесс разработки и повысить качество веб-приложений, созданных с помощью Firebase и развернутых на App Hosting .
Эмулятор App Hosting :
- Позволяет запускать веб-приложение локально, используя переменные среды, определенные в файлах конфигурации
apphosting.yaml
. - Можно экспортировать секреты, которые вы сохранили в различных средах App Hosting , что позволяет моделировать приложения в разных средах.
- Может использоваться вместе с другими эмуляторами Firebase. Если вы используете Firestore, Auth или любой другой эмулятор, Local Emulator Suite гарантирует, что эти эмуляторы запускаются раньше, чем эмулятор App Hosting .
Настройка эмулятора
Для начала установите и инициализируйте Local Emulator Suite , как описано в разделе Установка, настройка и интеграция Local Emulator Suite . Помимо любых других эмуляторов Firebase, которые вы хотите настроить, обязательно выберите App Hosting Emulator
. Интерфейс командной строки запрашивает некоторые значения эмулятора App Hosting , в том числе:
- Корневой каталог вашего приложения относительно проекта; это важно, если вы используете монорепозитории с App Hosting .
- Хотите ли вы экспортировать секреты для определенных сред .
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
◯ Firestore Emulator
◯ Database Emulator
◯ Hosting Emulator
◯ Pub/Sub Emulator
◯ Storage Emulator
◯ Eventarc Emulator
(Move up and down to reveal more choices)
? Specify your app's root directory relative to your project (.)
? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ Secrets
? Which environment would you like to export secrets from Secret Manager for?:
◯ base (apphosting.yaml)
❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.
Любые значения, которые вы указываете в этом процессе настройки, используются для обновления конфигурации эмулятора App Hosting в firebase.json
. Вы также можете настроить эмулятор хостинга приложений, обновив файл firebase.json
напрямую. Схема эмулятора хостинга приложений:
{
...
"emulators": {
"apphosting": {
"startCommandOverride": <command> [optional]
"rootDirectory": <path> [optional]
}
}
}
-
startCommandOverride
автоматически генерируется и устанавливается при инициализации эмулятора. Если этот параметр не указан, эмулятор обнаружит и запустит команду dev вашего менеджера пакетов. -
rootDirectory
используется для поддержки настроек проекта монорепо. Если ваше веб-приложение находится в подкаталоге, вам необходимо указать путь к этому каталогу относительно корня (расположениеfirebase.json
).
Управление эмуляцией
При инициализации эмулятора в корневом каталоге вашего приложения создается файл apphosting.local.yaml
. Этот файл конфигурации имеет ту же схему, что и файл apphosting.yaml
, используемый в рабочей среде, но предназначен исключительно для локальной разработки. По умолчанию эмулятор считывает конфигурацию из вашего файла apphosting.yaml
, но если файл apphosting.local.yaml
присутствует, то конфигурации в этом файле имеют приоритет и приоритет.
Экспортируйте секреты для локального моделирования различных сред.
Если вы работаете с несколькими средами и хотите локально имитировать различные среды приложений, вам могут понадобиться секреты соответствующих сред. Вы можете экспортировать секреты для конкретной среды с помощью команды CLI apphosting:config:export
(альтернативно, как показано в разделе Настройка эмулятора , вы можете дополнительно импортировать секреты во время инициализации эмулятора).
Эта команда требует, чтобы вы выбрали одну из доступных сред App Hosting вашего проекта. Конфигурация App Hosting для конкретной среды (например, «apphosting.staging.yaml») и базовая конфигурация App Hosting («apphosting.yaml») объединяются, при этом конфигурация для конкретной среды имеет приоритет. Если в обеих конфигурациях существуют секреты с одинаковым именем, используется секрет из конфигурации, зависящей от среды.
Например, чтобы экспортировать секреты в эмулятор из промежуточной среды:
firebase apphosting:config:export --project <your firebase project Id>
? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ Secrets
? Which environment would you like to export secrets from Secret Manager for?:
◯ base (apphosting.yaml)
❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.
Ваш файл apphosting.local.yaml
обновляется (или создается, если он не существует) с использованием экспортированных секретов в качестве переменных среды. Поскольку теперь файл содержит конфиденциальную информацию в виде обычного текста, он будет автоматически добавлен в ваш файл .gitignore
, чтобы предотвратить его случайное занесение в ваш репозиторий исходного кода.
Запустите эмулятор
firebase emulators:start
Это запустит все эмуляторы, определенные в вашем файле firebase.json
включая эмулятор App Hosting .