Как масштабировать единую базу кода реакции на несколько проектов Firebase?

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

Как лучше всего это сделать? Могу ли я использовать собственный .env. файлы, по одному для каждого проекта, для хранения конфигураций проекта?

Как я могу выполнить развертывание в нескольких проектах с помощью одной команды, например «firebase deploy production», которая развертывает сборку с использованием правильной конфигурации среды для каждого проекта.


person ynotu.    schedule 12.10.2018    source источник
comment
Взгляните на цели развертывания Firebase CLI: firebase.google.com/docs/cli/targets, которые, кажется, созданы для того, что вы пытаетесь сделать.   -  person Frank van Puffelen    schedule 12.10.2018
comment
С помощью целей развертывания я могу указать несколько хостинговых сайтов одного и того же проекта. Поскольку у меня может быть только одно хранилище для каждого проекта, мне нужно, чтобы эти хостинговые сайты были частью разных проектов. Нужно ли мне создавать собственный скрипт, который использует firebase для переключения между проектами и их индивидуального развертывания?   -  person ynotu.    schedule 13.10.2018
comment
Хммм .... хороший момент. Вы действительно можете создать сценарий для изменения проекта.   -  person Frank van Puffelen    schedule 13.10.2018


Ответы (1)


Я придумал такой подход:

1.Создайте проект firebase для каждого спин-оффа (с собственным URL-адресом хостинга и базой данных).

2. Замените переменные конфигурации firebase, такие как projectId и api-key, на переменные env:

const projectId = process.env.REACT_APP_FIREBASE_PROJECT_ID;
const apiKey = process.env.REACT_APP_FIREBASE_API_KEY;

const config = {
  apiKey,
  projectId,
  authDomain: `${projectId}.firebaseapp.com`,
  databaseURL: `https://${projectId}.firebaseio.com`,
  storageBucket: `${projectId}.appspot.com`,
};

firebase.initializeApp(config);

3. установите переменные env независимо для каждого проекта сборки и разверните его, указав проект с помощью параметра -P

REACT_APP_FIREBASE_PROJECT_ID=<projectId> REACT_APP_FIREBASE_API_KEY=<key> yarn build && firebase deploy --only hosting -P <projectId>

4. выполните команду cmd для каждого проекта (возможно, можно поместить их все в один сценарий, чтобы иметь возможность развертывать все проекты с помощью одной команды)

person ynotu.    schedule 19.10.2018