Я просто обновился до npm version 3 и заметил, что одно из самых больших изменений, которое оно произвело, заключается в том, что оно обеспечивает плоское дерево зависимостей.
Теперь ваши зависимости будут установлены максимально плоскими. Насколько возможно, все ваши зависимости, их зависимости и их зависимости будут установлены в вашей папке проекта
node_modules
без вложенности. Вы увидите только модули, вложенные под друг друга, когда два (или более) модуля имеют конфликтующие зависимости.
Так, например, если пакет A зависит от пакета B, то при npm install A
вы получите эту структуру:
--- root/
|--- node_modules/
|--- A/
|--- B/
вместо старой файловой структуры из версии 2 или ниже:
--- root/
|--- node_modules/
|--- A/
|--- node_modules/
|--- B/
Первая (и Im sure not the last) проблема, с которой я столкнулся, заключалась в следующем:
Пакет A не знает о поведении npm v3s и зависит от пакета B. Но A предполагает старую (v2) файловую структуру, потому что она имеет node_modules/B
в своем коде вместо правильного ../node_modules/B
. Теперь код из A не будет компилироваться, потому что он ищет B/
в неправильном каталоге.
Если мне не хочется навязывать разработчику исправление кода и ожидание обновления A, мне интересно, могу ли я установить параметр, который заставит npm устанавливать A в своей собственной папке node_modules
, так же, как это сделал npm v2.