Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 为什么在npm中使用对等依赖关系插件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么例如Grunt插件定义它对grunt的依赖作为“对等依赖”?

为什么插件不能只有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,以避免与其他咕噜插件(或任何)的冲突?

解决方法

TL; DR:peerDependencies是针对暴露给消费代码(并且期望被消费代码使用)的依赖关系,而不是没有公开并且仅是实现细节的“私有”依赖关系。

对等体依赖关系解决的问题

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,请注明来意。