大佬教程收集整理的这篇文章主要介绍了node.js – 为什么在npm中使用对等依赖关系插件?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么插件不能只有Grunt作为它自己的依赖在grunt-plug / node_modules?
对等依赖关系在这里描述:https://nodejs.org/en/blog/npm/peer-dependencies/
但我真的不能得到它。
例
我正在使用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" },
嗯k。 “依赖包”被安装到[rootfolder] / node_modules / grunt-steroids / node_modules这对我是逻辑的。“devDependencies”没有安装,我相信是由npm检测我只是试图使用咕噜类固醇,并不发展它。
但是我们有“peerDependencies”。
这些安装在[rootfolder] / node_modules,我不明白为什么,不在[rootfolder] / node_modules / grunt-steroids / node_modules,以避免与其他咕噜插件(或任何)的冲突?
对等体依赖关系解决的问题
NPM的模块系统是分层的。更简单的场景的一个很大的优点是,当你安装一个NPM包,那个包带来了它自己的依赖,所以它将开箱即用。
但问题出现时:
>您的项目和您使用的一些模块取决于同一个其他模块。
>三个模块必须相互通信。
例
假设你正在构建YourCoolProject并使用JacksModule 1.0和JillsModule 2.0。让我们假设JacksModule也依赖于JillsModule,但是在不同的版本,比如1.0。只要这2个版本不符合,就没有问题。 JacksModule在表面下使用JillsModule的事实只是一个实现细节。我们捆绑JillsModule两次,但是这是一个小的价格支付,当我们得到稳定的软件开箱。
但现在让我们假设JacksModule暴露了它对JillsModule的依赖。它接受JillsClass的对象实例例如…当我们使用版本2.0的库创建一个新的JillsClass,并将它传递给jacksFunction会发生什么?所有的地狱都会破碎!简单的事情,像jillsObject instanceof JillsClass将突然返回false,因为jillsObject实际上是另一个JillsClass的实例,2.0版本。
对等关系如何解决这个问题
他们告诉NPM’我需要这个包,但我需要的版本是项目的一部分,而不是一些版本私人我的模块’。当NPM看到您的软件包被安装到没有该依赖项的项目中,或者它的版本不兼容时,它会在@R_564_9382@警告用户。
什么时候应该使用对等体依赖?
>当你正在构建一个库供其他项目使用时,
>这个库正在使用一些其他库,和
>您期望/需要用户也使用该其他库
常见的场景是较大框架的插件。想想像Gulp,Grunt,Babel,Mocha等等。如果你写一个Gulp插件,你想要该插件与用户的项目正在使用的相同的Gulp,而不是与你自己的私人版本的Gulp。
以上是大佬教程为你收集整理的node.js – 为什么在npm中使用对等依赖关系插件?全部内容,希望文章能够帮你解决node.js – 为什么在npm中使用对等依赖关系插件?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。