#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).