Я понимаю, что скрипты npm добавляют ./node_modules/.bin
к вашему PATH
, поэтому вы можете просто запустить npm test
используя package.json
ниже, и npm автоматически использует локальную версию ./node_modules/.bin
найденную в ./node_modules/.bin
"scripts": {
"test": "mocha"
}
Это приятная функция, потому что это позволяет мне записывать файлы package.json
следующим образом:
"scripts": {
"test": "./node_modules/.bin/mocha"
}
НО что, если я приведу нового разработчика, который установил мокко глобально? или мне нужно нажать это в среду с предварительно настроенными глобальными пакетами? Если я использую короткую mocha
, а не ./node_modules/.bin/mocha
в моем package.json
./node_modules/.bin/mocha
, что имеет преимущество, глобальный или локальный пакет?
Node.js попытается запустить сначала ваши локально установленные пакеты.
Если вам нужен модуль, Node.js ищет его, просматривая все node_modules/каталоги в каталогах предков (
./node_modules/
,../node_modules/
,../../node_modules/
и т.д.). Используется первый подходящий модуль.
Для более подробного объяснения того, как Node.js разрешает требуемые модули, вот хорошая разбивка.
../../../../node_modules/
всегда будет первым подходящим модулем до проверки/usr/local/bin
(global). Сладкий! Благодарю.