Как получить переменную среды в скрипте npm?

#node.js #npm #package.json

#node.js #npm #package.json

Вопрос:

Я пытаюсь получить доступ к переменной среды в самом скрипте npm следующим образом:

 "scripts": {
  "test": "istanbul cover node_modules/.bin/_mocha --root ../SERVER/routes -- --recursive"
},
  

И запустите этот скрипт следующим образом:

 SERVER=somewhere npm test
  

Как я могу получить разрешенное значение SERVER переменной в скрипте npm в самом package.json?

Комментарии:

1. зачем вам это нужно?

2. @havenchyk Потому что я пытаюсь автоматизировать этот тест в TeamCity, и поэтому я передаю SERVER его как переменную среды оттуда

3. package.json — это просто файл json, вы не можете получить его там afaik, но вы можете получить эту переменную в своем скрипте с помощью process.env

4. @havenchyk работает! Это было быстро. Спасибо 🙂 Я не могу отметить ответ прямо сейчас, до тех пор, бонусный вопрос: существуют ли какие-либо условия для установки имени переменной среды? Например, я могу установить my-server в качестве переменной env?

5. Я также опубликовал это в качестве ответа 🙂 что касается бонусного вопроса, извините, я его не понял 🙂

Ответ №1:

Для пользователей Windows вы можете использовать свои переменные следующим образом: %SERVER% вместо $SERVER .

Или лучший подход к использованию cross-env модуля, который позволит вам делать это как linux на всех платформах:

 npm i cross-env
  

И использовать его :

 "scripts": {
  "test": "cross-env-shell "istanbul cover node_modules/.bin/_mocha --root ../$SERVER/routes -- --recursive""
}
  

Комментарии:

1. Рад, что принятый ответ сработал для OP, но вместо этого это действительно должен быть принятый ответ

Ответ №2:

Будет ли использование $SERVER работать для вас?

"scripts": {
"test": "istanbul cover node_modules/.bin/_mocha --root ../$SERVER/routes -- --recursive"
}

Комментарии:

1. Это не работает кроссплатформенно (т. Е. На Windooze).