例如,为什么一个Grunt插件将它对Grunt的依赖定义为“同行的依赖性”?
为什么插件不能在grunt-plug / node_modules中把Grunt作为自己的依赖项?
对等依赖关系描述在这里:https://nodejs.org/en/blog/npm/peer-dependencies/
但我不太明白。
< em > < / em >例子
我正在使用AppGyver类固醇,目前使用Grunt任务将我的源文件构建到/dist/文件夹中,以在本地设备上提供服务。我是npm的新手,所以我想完全理解发生了什么。
到目前为止,我得到了这个:
[rootfolder] / package.json告诉npm它依赖于grunt-steroids
npm包进行开发:
"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插件(或其他)的冲突?