Почему я не могу установить переменные Env, запустив скрипт BASH из скрипта Npm? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть проект nodejs javascript, но я бы хотел установить несколько переменных окружения локально. создал bash-файл, который просто экспортирует некоторые переменные:

#!/usr/bin/env bash

export waka=flaka
export fat=booty

Когда я использую точку для источника и запускаю файл из командной строки, он работает нормально:

. ./env.sh

И я вижу, что переменная установлена ​​

echo $waka  # prints "flaka"

Но затем я пытаюсь взять эту команду и сделать ее сценарием npm, добавив ее в мой пакет. Json

scripts: {
  "set-env": ". ./env.sh",
  ...
 }

и запустите его:

npm run set-env

Сценарий выполняется, но переменные среды не сохраняются:

echo $waka  # prints undefined (assuming you didn't already run it from command line)

Итак, мне интересно, почему он не сохраняет переменные окружения в виде скрипта npm, и если возможно запустить скрипт bash из скрипта npm таким образом, чтобы переменные среды сохранялись до конца сеанс командной строки. Спасибо!

1 Ответ

0 голосов
/ 03 июля 2018

npm не является командой оболочки; он запускается в отдельном процессе, который разветвляет другую оболочку , чтобы выполнить команду, указанную set-env. env.sh выполняется, но затем эта оболочка немедленно завершается, и в этот момент изменения исчезают (а затем npm сама завершается).

...