Почему, например, плагин Grunt определяет свою зависимость от grunt как " равноправные зависимости "?
Почему плагин не может просто иметь Grunt как свою собственную зависимость в grunt-plug/node_modules?
Зависимости пира описаны здесь: https://nodejs.org/en/blog/npm/peer-dependencies/
Но я не совсем понимаю.
пример
Сейчас я работаю со стероидами AppGyver, которые используют задачи Grunt для сборки моих исходных файлов в папку/dist/для обслуживания на локальном устройстве. Я новичок в npm и хрюкаю, поэтому я хочу полностью понять, что происходит.
Пока я получаю это:
[rootfolder]/package.json сообщает npm, что это зависит от пакета nru grunt-steroids
для разработки:
"devDependencies": {
"grunt-steroids": "0.x"
},
Хорошо. Запуск npm install в [rootfolder] обнаруживает зависимость и устанавливает grunt-стероиды в [rootfolder]/node_modules/grunt-steroids.
Затем Npm читает [rootfolder]/node_modules/grunt-steroids/package.json, чтобы установить собственные зависимости grunt-steroids
:
"devDependencies": {
"grunt-contrib-nodeunit": "0.3.0",
"grunt": "0.4.4"
},
"dependencies": {
"wrench": "1.5.4",
"chalk": "0.3.0",
"xml2js": "0.4.1",
"lodash": "2.4.1"
},
"peerDependencies": {
"grunt": "0.4.4",
"grunt-contrib-copy": "0.5.0",
"grunt-contrib-clean": "0.5.0",
"grunt-contrib-concat": "0.4.0",
"grunt-contrib-coffee": "0.10.1",
"grunt-contrib-sass": "0.7.3",
"grunt-extend-config": "0.9.2"
},
Пакеты " зависимостей " устанавливаются в [rootfolder]/node_modules/grunt-steroids/node_modules, что логично для меня.
" DevDependencies " не установлены, что, я уверен, контролируется npm, обнаруживающим, что я просто пытаюсь использовать grunt-steroids
, а не развиваться на нем.
Но тогда у нас есть " взаимные зависимости ".
Они установлены в [rootfolder]/node_modules, и я не понимаю, почему там, а не в [rootfolder]/node_modules/grunt-steroids/node_modules, чтобы избежать конфликтов с другими подключаемыми плагинами (или чем-то еще)?