2016-05-24 2 views
0

У меня есть НПМ скрипт для запуска сервера WebPack разработчика, но первая моя настройка окр -Могу ли я ссылаться на переменные оболочки из сценария npm?

в моих .zshrc - export DEV_SERVER_PORT=8001

эхо возвращает ожидаемые результаты

>echo $DEV_SERVER_PORT 
8001 

вот сценарий я» м от пакета.json через npm run

webpack-dev-server --inline --hot --port 8001 

это правильно выполняется v И. НПМ запустить -

echo $DEV_SERVER_PORT 

результат: 8001

это дает неутешительные результаты с помощью NPM RUN-

webpack-dev-server --inline --hot --port $DEV_SERVER_PORT 

результате webpack-dev-server --inline --hot --port $DEV_SERVER_PORT

+0

Пожалуйста, покажите, что вы пытались более подробно, * включая *, как вы экспортировали желаемое значение в окружающую среду. MCVE был бы идеальным (то есть полным и поддающимся проверке воспроизведением, по http://stackoverflow.com/help/mcve). –

+0

... btw, как в стороне, имена всех шапок используются системой и оболочкой; это имена переменных среды нижнего регистра * или, точнее, имена, содержащие хотя бы один строчный символ, зарезервированные для использования приложения. См. Соответствующую спецификацию в http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html, четвертый абзац. –

+0

Возможный дубликат [Передача зависящих от среды переменных в webpack] (http://stackoverflow.com/questions/30030031/passing-environment-dependent-variables-in-webpack) – Paul

ответ

0

Вы должны использовать process.env. Это объект, который содержит все переменные среды процесса. Например, если вы определяете переменные окружения PORT, он будет доступен с помощью:

process.env.PORT 

Вы может необходимости преобразовать значение к нужному типу. process.env всегда содержит значения в виде строк, следовательно - например. для порта - вам может потребоваться преобразовать значение в число.

Таким образом, вы в конечном итоге с чем-то, таких как:

const port = process.env.PORT - 0; 
+0

'webpack-dev-server -inline -hot -port process.env.DEV_SERVER_PORT' как сценарий в' package.json' дает исполнение 'webpack-dev-server -inline -hot -port process.env.DEV_SERVER_PORT' ... не совсем правильно –

1

Следующий результат от Zsh, сообщил в своем вопросе:

>declare -p DEV_SERVER_PORT 
typeset DEV_SERVER_PORT=8000 

... означает, что переменная оболочки не на самом деле экспортируется и, следовательно, недоступен в среде подпроцессов.


Выполните следующие действия:

export DEV_SERVER_PORT 

и, после этого, вы должны увидеть следующее:

>declare -p DEV_SERVER_PORT 
typeset -x DEV_SERVER_PORT=8000 

-x указывает, что флаг экспорта установлен, и эта переменная (с любыми изменениями) устанавливается в любом подпроцессе.

+0

Спасибо за это, я смутил себя. сделал изменения, которые я забыл. спасибо за то, что я проталкиваю свое упрямство. –

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