Условно firebase развертывает функции 'предустановки' в зависимости от терминала ps или bash.

Я на 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 ответ

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

изменился на "copyKeys": "node ./scripts/copy-keys.js" так что build сейчас может запускать один скрипт.

copy-keys.js - это:

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 ...

Другие вопросы по тегам