Firebase + Next.js без сервера, на GCP - Как управлять подготовкой, производством + локальным - PullRequest
0 голосов
/ 04 марта 2019

Я использую React с функциями next.js и Google Cloud для обслуживания приложения.Я также использую Firebase.Я ищу лучший способ автоматической настройки промежуточной и производственной конфигурации для 3 сред.

  • Производство: использование производственных учетных данных
  • Подготовка: использование учетных данных
  • Локальный: также использует учетные данные

У меня есть два проекта Firebase, и в настоящее время я переключаюсь между настройками, используя файл firebase.js в моем приложении.Я поменяю объект конфигурации, затем разверну.Я хочу иметь возможность запускать приложение локально, как на стадии подготовки, так и на производстве, не меняя ничего при развертывании, так как это приводит к ошибкам.

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

Я вижу, что это решается с помощью:

  1. переменных среды Google Cloud Platform (но я пробовал и не смог прочитать их с клиента).Может быть, я изменил конфигурацию next.js, чтобы читать что-то в облаке при запуске, вместо изменения конфигурации при развертывании?
  2. Конфигурация локальной среды nextjs, но это ничего не знает о двух разных серверах (только dev против prod, которые не совпадают точно с локальным и облачным)
  3. Реагирует конфигурация dotenv (аналогично пункту выше)
  4. конфигурация webpack / npm, которая меняет конфигурацию при компиляции
  5. Замена env на основе firebase use [environment] в командной строке во время развертывания

Точки № 1 и № 5 кажутся наиболее вероятными кандидатами для автоматического и плавного развертывания, но я не могу понять,как читать переменные конфигурации GCP в React и для # 5 Я не знаю, как запустить собственный сценарий, который мог бы менять переменные на основе firebase project, используемого в настоящее время в командной строке.

Большинство информацииЯ видел, что это не решает эту проблему точно - все переменные env либо только в облачных функциях, либо различают local против cloud или dev против prod, но не может отличить два облака от локального, который использует ту же конфигурацию, что и одно из облаков.

Кто-то должен был иметь опыт работы с этим?

Спасибо,

Пол

...