Условно firebase развертывает функции 'предустановки' в зависимости от терминала ps или bash. - PullRequest
0 голосов
/ 24 января 2019

Я на Windows-машине с vscode и запускаю команды из терминала bash внутри него. Однако я обнаружил, что firebase deploy cli более стабилен на моей машине, если вызывается из cmd или powershell. Иногда зависает с терминалом vscode.bash или gitbash.

У меня есть облачные функции в машинописном тексте, а firebase deploy --only functions запускает сценарий предустановки, например, npm run build

Я изменил свой скрипт сборки npm на "build": "tsc && npm run copyKeys",, чтобы он всегда гарантировал копирование изменений ключей перед развертыванием. Эти ключи являются ключами учетной записи службы, которые используются во время развертывания.

Сценарий copyKeys - "copyKeys": "cp -rf ./src/environments/service.acct.keys/ ./lib/environments/",, он прекрасно работает в bash.

Но мне нужен второй скрипт xcopyKeys4Win для использования powershell, который становится "xcopyKeys4Win": "XCOPY .\\src\\environments\\service.acct.keys .\\lib\\environments\\service.acct.keys /s /e /y /i", который прекрасно работает с PS.

Теперь моя проблема заключается в том, что когда я вызываю npm run deploy, это вызывает firebase deploy --only functions, который запускает сценарии предустановки firebase, которые вызывают npm run build, и этот сценарий сборки жестко задан либо ... npm run copyKeys, либо ... npm run xcopyKeys4Win.

Мне нужно как-то условно вызвать 'npm run deploy' в зависимости от того, нужен ли bash cp, например. в mac / linux / vscode.bash / gitbash или xcopy при использовании cmd или PS.

например. или что-то похожее на настройку цели firebase хостинга или условие в скрипте сборки npm или что-то еще, у кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 25 января 2019

ref: Команда кроссплатформенного канала в сценарии NPM

изменена на "copyKeys": "node ./scripts/copy-keys.js", поэтому сборка теперь может запускать один сценарий.

copy-keys.jsis:

const fse = require('fs-extra');
const path = require('path');

const rootPath = path.resolve('./');
const sep = path.sep;
const head = `${rootPath}${sep}`;
const tail = `${sep}environments${sep}service.acct.keys`;

const src = `${head}src${tail}`;
const dest = `${head}lib${tail}`;

fse.copySync(src, dest);

Так что больше не нужно xcopyKeys4Win ...

...