Как сценарии npm отдают приоритет локальной зависимости над глобальными?

1

Я понимаю, что скрипты 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, что имеет преимущество, глобальный или локальный пакет?

Теги:
npm
npm-scripts

1 ответ

2
Лучший ответ

Node.js попытается запустить сначала ваши локально установленные пакеты.

Если вам нужен модуль, Node.js ищет его, просматривая все node_modules/каталоги в каталогах предков (./node_modules/, ../node_modules/, ../../node_modules/ и т.д.). Используется первый подходящий модуль.

Для более подробного объяснения того, как Node.js разрешает требуемые модули, вот хорошая разбивка.

  • 0
    Хорошо, это выглядит многообещающе, поэтому ../../../../node_modules/ всегда будет первым подходящим модулем до проверки /usr/local/bin (global). Сладкий! Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню