Передать более одной переменной в скрипт package.json

У меня есть в package.json (НЕ BASH, НЕ SH, НЕ ZSHELL, НЕ РЫБА).

Итак, после того, как мы установили тот факт, что это мой файл package.json, позвольте мне представить его вам:

package.json

  "scripts": {
    "dev": "NODE_ENV=myValue myProgram"
  }

Я хочу добавить больше переменных (например, MYVAR=myOtherValue) к вышеуказанному файлу, который является моим файлом package.json. Как я могу это сделать (добавив больше переменных в мой файл package.json)?

Позвольте мне прояснить, что я не хочу читать man-страницу bash или zshell, или fish, или sh. Вот почему я поставил вопрос здесь и не прочитал справочную страницу - иначе я бы не поставил ее здесь и прочитал бы справочную страницу. Спасибо за понимание.

1 ответ

Решение

Ваш сценарий должен быть:

"dev": "NODE_ENV=myValue MYVAR=myOtherValue myProgram"

как вы можете несколько сред, когда разделены пробелом. Это вытекает из общего поведения терминалов, таких как bash, где вы можете установить несколько переменных env на лету:

FOO1=baz FOO2=fnord FOO3=baz env | grep FOO
FOO1=baz
FOO2=fnord
FOO3=baz

Я со Стивеком по этому вопросу, я прочитал ответ (повторяющийся ответ) и разочарован ссылками на bash. Я использую систему Windows, которая использует Powershell. Я хочу передать несколько переменных среды и заставить их работать в системах Windows с помощью Powershell. Любая ссылка на команды *nix и т. Д., Если только не включить межсистемное использование, запутывает воду.

Пока на этот ответ нет ответа. Так что добавлю то, что нашел

В этом вопросе рассказывается, как передать 1 переменную. Как установить переменные среды из package.json

 "start": "set NODE_ENV=YOURENV&&node start.js"

Как теперь пройти больше 1? Это все еще вопрос.

Мне сказали, что лучше всего использовать cross-env: cross-env NODE_ENV=production my-command

Ответ был дан здесь: https://github.com/kentcdodds/cross-env/issues/15

"scripts": {
  "debug": "cross-env NODE_PATH=. DEBUG=app:* nodemon bootload.js"
}

Однако cross-env не использует PowerShell, но не использует командную оболочку для Windows. Итак, вернемся к основному вопросу. [если вы не внесете это изменение https://github.com/kentcdodds/cross-env/issues/192

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