2015-03-16 3 views
1

I read on github that:npm: Откуда берутся зависимости от детей?

хрюкать-мокко-тест использует функциональные возможности Peer зависимости НПМ

Я не был уверен, что "Peer зависимости" были, так что я проверил НПМ документы и обнаружили:

npm является прекрасным как менеджер пакетов. В частности, он обрабатывает суб-зависимости очень хорошо: если мой пакет зависит от версии запроса 2 и некоторая-другая-библиотека

Что я беру в виде:

  1. Возник «зависимостей пэра» означает, что для правильной работы зависимостям могут потребоваться другие зависимости .
  2. НПМ создает дерево как структура, где зависимость является корнем, и корневая зависимость имеет детей зависимостей

Вопросы Я оставил с являются:

Где делают дети зависимостей приходят из? Копии? Или это ссылки на другие зависимости, уже присутствующие в пакете.json?

+0

Не уверен, что это то, о чем вы просите, но если в вашем пакете.json у вас есть зависимости A, B и C, и каждый из них зависит от X, каждый из них будет иметь копию X в node_modules/AorBorC/node_modules/X – Salem

+0

Итак, в этом примере каждая вещь имеет свою СОБСТВЕННУЮ копию x? Или у каждого будет ссылка на тот же x? –

ответ

1

У каждого из них будет копия пакета. Например, если у вас есть проект с этими зависимостями:

"dependencies": { 
    "node-handlebars": "*", 
    "less-file": "*", 
    "async-ls": "*", 
    "promise": "4.0.0" 
} 

и запустить npm install, вы бы 4 копии promise (тот, который вы объявлены как зависимость и 3 других необходимых от каждого из других зависимостей)

$ find . -name promise 
./node_modules/async-ls/node_modules/promise 
./node_modules/promise 
./node_modules/node-handlebars/node_modules/promise 
./node_modules/less-file/node_modules/promise 

Обратите внимание, что это произойдет, даже если каждый зависит от конкретной версии promises пакета (экс 4.0.0).

Несмотря на то, что вы выглядите немного избыточным, я думаю, это упрощает управление зависимостями, и в настоящее время дополнительное пространство, используемое в целом, должно быть незначительным.