Я использую React с функциями next.js и Google Cloud для обслуживания приложения.Я также использую Firebase.Я ищу лучший способ автоматической настройки промежуточной и производственной конфигурации для 3 сред.
- Производство: использование производственных учетных данных
- Подготовка: использование учетных данных
- Локальный: также использует учетные данные
У меня есть два проекта Firebase, и в настоящее время я переключаюсь между настройками, используя файл firebase.js
в моем приложении.Я поменяю объект конфигурации, затем разверну.Я хочу иметь возможность запускать приложение локально, как на стадии подготовки, так и на производстве, не меняя ничего при развертывании, так как это приводит к ошибкам.
Для меня проблема заключается в установке различных переменных среды для двух облаковпроекты ... Я могу читать переменные облачной среды, которые я там установил, но только в среде облачных функций, а не в клиентском приложении, где я в данный момент меняю конфигурацию.
Я вижу, что это решается с помощью:
- переменных среды Google Cloud Platform (но я пробовал и не смог прочитать их с клиента).Может быть, я изменил конфигурацию next.js, чтобы читать что-то в облаке при запуске, вместо изменения конфигурации при развертывании?
- Конфигурация локальной среды nextjs, но это ничего не знает о двух разных серверах (только dev против prod, которые не совпадают точно с локальным и облачным)
- Реагирует конфигурация dotenv (аналогично пункту выше)
- конфигурация webpack / npm, которая меняет конфигурацию при компиляции
- Замена env на основе
firebase use [environment]
в командной строке во время развертывания
Точки № 1 и № 5 кажутся наиболее вероятными кандидатами для автоматического и плавного развертывания, но я не могу понять,как читать переменные конфигурации GCP в React и для # 5 Я не знаю, как запустить собственный сценарий, который мог бы менять переменные на основе firebase project
, используемого в настоящее время в командной строке.
Большинство информацииЯ видел, что это не решает эту проблему точно - все переменные env либо только в облачных функциях, либо различают local
против cloud
или dev
против prod
, но не может отличить два облака от локального, который использует ту же конфигурацию, что и одно из облаков.
Кто-то должен был иметь опыт работы с этим?
Спасибо,
Пол