例如,为什么一个Grunt插件将它对Grunt的依赖定义为“对等依赖”?
为什么插件不能把Grunt作为它自己的依赖项放在Grunt -plug/node_modules中?
对等依赖关系描述在这里:https://nodejs.org/en/blog/npm/peer-dependencies/
但我不太明白。
例子
我正在使用AppGyver类固醇,目前使用Grunt任务将我的源文件构建到/dist/文件夹中,以在本地设备上提供服务。我是npm的新手,所以我想完全理解发生了什么。
到目前为止,我得到了这个:
[rootfolder] /包。Json告诉NPM它依赖于NPM包的grunt-steroids进行开发:
"devDependencies": {
"grunt-steroids": "0.x"
},
好的。在[rootfolder]中运行npm install来检测依赖,并在[rootfolder]/node_modules/grunt-steroids中安装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,而不是在它上面开发。
但是我们有“peerDependencies”。
这些安装在[rootfolder]/node_modules,我不明白为什么有而不是在[rootfolder]/node_modules/grunt-steroids/node_modules,以避免与其他grunt插件(或任何东西)的冲突?