2016-09-30 3 views
0

Я хотел бы, чтобы внутри моего пакета package.json выполнялся скрипт, который будет устанавливать переменные среды, которые может использовать мое приложение. мне нужно что-то вроде этого (в моем package.json)node - package.json: как выполнить скрипт, который устанавливает переменные окружения

"scripts": { 
    "dev": "set-env-vars.sh && webpack-dev-server --hot --inline & cd server && NODE_ENV=development node app.js", 
    }, 

Это мой set-env-vars.sh файл:

#!/bin/bash 
export ENV_MONGODB_URI="mongodb://localhost:27017/mydb" 
... 

Я знаю, что мне нужно использовать источник или. для экспорта моих переменных в оболочку, это работает в оболочке, но не для моего dev-script package.json.

Любые решения для достижения этого? Спасибо.

ответ

1

Проблема в одном амперсанде (&) после webpack-dev-server вызов. Trailing ampersand направляет оболочку для запуска команды в фоновом режиме. На практике ваша команда будет разделена на две части, которые будут выполняться асинхронно в отдельных оболочках. Если вы используете амперсанд (&) намеренно, то вы должны источник окр вары в обеих частях, как это:

. ./set-env-vars.sh && webpack-dev-server --hot --inline & . ./set-env-vars.sh && cd server && NODE_ENV=development node app.js 

так, переменные из set-env-vars.sh будет доступен как для WebPack-DEV -server и узел

или, если вы хотите, чтобы запустить его синхронно:

. ./set-env-vars.sh && webpack-dev-server --hot --inline && cd server && NODE_ENV=development node app.js 
+0

проблема заключается в том, что, когда я добавить '.' или' source' внутри, я получаю это: 'sh: line 0:.: set-env-vars.sh: файл не найден' – CodeBy

+0

Я думаю, вы должны использовать'./set-env-vars.sh' вместо этого из 'set-env-vars.sh' для выполнения файла из текущего каталога. – teq

+0

Я отредактировал ответ соответственно – teq

Смежные вопросы