Создавайте прототипы и тестируйте веб-приложения с помощью эмулятора хостинга Firebase.

Прежде чем приступить к созданию прототипа и тестированию веб-приложения с помощью эмулятора Firebase Hosting , убедитесь, что вы понимаете общий рабочий процесс Firebase Local Emulator Suite , а также что вы установили и настроили Local Emulator Suite и ознакомились с его командами CLI .

Вы также должны быть знакомы с функциями и процессом внедрения Firebase Hosting . Начните с введения в Firebase Hosting .

Что я могу делать с эмулятором Firebase Hosting ?

Эмулятор Firebase Hosting обеспечивает высококачественную локальную эмуляцию Hosting сервисов, предоставляя большую часть функциональности, которая есть в производственном Hosting . Эмулятор Hosting позволяет вам:

  • Создавайте прототипы статических сайтов и веб-приложений без дополнительных затрат на хранение и доступ.
  • Создавайте прототипы, тестируйте и отлаживайте функции HTTPS перед развертыванием на вашем хостинговом сайте.
  • Тестируйте сайты и веб-приложения в контейнеризированных рабочих процессах непрерывной интеграции.

Выберите проект Firebase

Firebase Local Emulator Suite эмулирует продукты для одного проекта Firebase.

Чтобы выбрать проект для использования, перед запуском эмуляторов в CLI запустите firebase use в рабочем каталоге. Или вы можете передать флаг --project каждой команде эмулятора.

Local Emulator Suite поддерживает эмуляцию реальных проектов Firebase и демонстрационных проектов.

Тип проекта Функции Использовать с эмуляторами
Настоящий

Настоящий проект Firebase — это тот, который вы создали и настроили (скорее всего, через консоль Firebase ).

Реальные проекты имеют активные ресурсы, такие как экземпляры баз данных, сегменты хранения, функции или любые другие ресурсы, которые вы настроили для этого проекта Firebase.

Работая с реальными проектами Firebase, вы можете запускать эмуляторы для любого или всех поддерживаемых продуктов.

Для любых продуктов, которые вы не эмулируете, ваши приложения и код будут взаимодействовать с реальным ресурсом (экземпляром базы данных, контейнером хранилища, функцией и т. д.).

Демо

Демонстрационный проект Firebase не имеет реальной конфигурации Firebase и живых ресурсов. К таким проектам обычно обращаются через codelabs или другие руководства.

Идентификаторы демонстрационных проектов имеют префикс demo- .

При работе с демонстрационными проектами Firebase ваши приложения и код взаимодействуют только с эмуляторами. Если ваше приложение попытается взаимодействовать с ресурсом, для которого не запущен эмулятор, этот код завершится ошибкой.

Мы рекомендуем вам использовать демо-проекты везде, где это возможно. Преимущества включают:

  • Более простая настройка, поскольку вы можете запускать эмуляторы, даже не создавая проект Firebase.
  • Более высокий уровень безопасности, поскольку если ваш код случайно вызовет неэмулируемые (производственные) ресурсы, то не возникнет никаких шансов на изменение данных, использование и выставление счетов.
  • Улучшенная поддержка в автономном режиме, поскольку для загрузки конфигурации SDK не требуется доступ в Интернет.

Основной рабочий процесс прототипирования

Если вы делаете быстрые итерации или хотите, чтобы ваше приложение взаимодействовало с эмулированными ресурсами бэкэнд-проекта, вы можете протестировать содержимое и конфигурацию Hosting локально. При локальном тестировании Firebase обслуживает ваше веб-приложение по локально размещенному URL.

  1. (Необязательно) По умолчанию ваше локально размещенное приложение будет взаимодействовать с реальными , а не эмулированными ресурсами проекта (функциями, базой данных, правилами и т. д.). Вместо этого вы можете по желанию подключить свое приложение для использования любых эмулированных ресурсов проекта, которые вы настроили. Подробнее: Realtime Database | Cloud Firestore | Cloud Functions

  2. Из корня локального каталога проекта выполните следующую команду:

    firebase emulators:start
  3. Откройте веб-приложение по локальному URL-адресу, возвращенному CLI (обычно http://localhost:5000 ).

  4. Чтобы обновить локальный URL-адрес с учетом изменений, обновите браузер.

Тест с других локальных устройств

По умолчанию эмуляторы отвечают только на запросы от localhost . Это означает, что вы сможете получить доступ к размещенному контенту из веб-браузера вашего компьютера, но не с других устройств в вашей сети. Если вы хотите провести тестирование с других локальных устройств, настройте firebase.json следующим образом:

"emulators": {
    // ...

    "hosting": {
      "port": 5000,
      "host": "0.0.0.0"
    }
  }

Генерация токенов аутентификации для непрерывных интеграционных рабочих процессов

Если ваши рабочие процессы непрерывной интеграции основаны на Firebase Hosting, то вам нужно будет войти в систему с помощью токена, чтобы запустить firebase emulators:exec . Другие эмуляторы не требуют входа.

Чтобы сгенерировать токен, запустите firebase login:ci в локальной среде; это не должно выполняться из системы CI. Следуйте инструкциям по аутентификации. Вам нужно будет выполнить этот шаг только один раз для каждого проекта, так как токен будет действителен для всех сборок. Токен следует рассматривать как пароль; убедитесь, что он хранится в секрете.

Если ваша среда CI позволяет вам указывать переменные среды, которые можно использовать в скриптах сборки, просто создайте переменную среды с именем FIREBASE_TOKEN , значением которой будет строка токена доступа. Firebase CLI автоматически подберет переменную среды FIREBASE_TOKEN , и эмуляторы запустятся правильно.

В крайнем случае вы можете просто включить токен в свой скрипт сборки, но убедитесь, что ненадежные стороны не имеют доступа. Для этого жестко закодированного подхода вы можете добавить --token "YOUR_TOKEN_STRING_HERE" к команде firebase emulators:exec .

Что дальше?