当前位置: 首页 > news >正文

陕西省建设工程造价管理协会网站/惠州百度推广优化排名

陕西省建设工程造价管理协会网站,惠州百度推广优化排名,做网盘搜索网站,WordPress调用npr电台本文分享自华为云社区《npm install xxxx --legacy-peer-deps命令是什么?为什么可以解决下载时候产生的依赖冲突呢?》,作者: gentle_zhou 。 在日常使用命令npm install / npm install XX下载依赖的操作中,我经常会遇…

本文分享自华为云社区《npm install xxxx --legacy-peer-deps命令是什么?为什么可以解决下载时候产生的依赖冲突呢?》,作者: gentle_zhou 。

在日常使用命令npm install / npm install XX下载依赖的操作中,我经常会遇到无法解析依赖树的问题(依赖冲突):

 

但是每当遇到这种情况的时候,我用命令npm install --legacy-peer-deps就可以顺利进行下载操作:

 

这是为什么呢?带着好奇心,我去研究学习了一番npm install xxxx --legacy-peer-deps命令是什么?为什么可以解决下载时候产生的依赖冲突呢?(注:我本地当前正在使用的npm版本是8.6.0)

本文导航:什么是peerDependency?;npm install xxxx --legacy-peer-deps命令是什么?为什么可以解决下载时候产生的依赖冲突呢?;参考资料。

什么是peerDependency?

我们日常在前端项目开发过程中,见到最多的一定是package.json文件里的devDependencies(用于在开发环境下依赖的模块)和dependencies(无论开发环境还是生产环境都需要的依赖模块)这两个字段(感兴趣的小伙伴可以看我这篇文章:package.json文件里的dependencies和devDependencies有什么区别吗?)。

那么命令--legacy-peer-dep里的peerDependency是什么依赖呢?根据geeksforgeeks网站里的定义:

Peer Dependencies: In package.json file, there is an object called as peerDependencies and it consists of all the packages that are exactly required in the project or to the person who is downloading and the version numbers should also be the same. That is the reason they were named as peerDependencies. The best example is ‘react’ which is common in every project to run similarly.

翻译一下就是说,在package.json文件中,存在一个叫做peerDependencies(对等依赖关系)的对象,它包含了项目里需要的所有的包或则用户正在下载的版本号相同的所有的包(很绕,但意思就是对等依赖关系指定我们的包与某个特定版本的npm包兼容);对等依赖关系最好的例子就是React,一个声明式的创建用户界面的JS库。

那么我们为什么需要对等依赖关系呢?

假设我们现在有一个HelloHWCloud工程,已经在其根目录下的package.json文件中的dependencies字段里声明了packageA作为依赖,而其下面有两个项目app_A和app_B,它们也依赖packageA。如果我们用dependencies而不是peerDepenedencies来声明,那么npm install安装完项目之后的依赖结构如下图所示:

├── HelloHWCloud
│   └── node_modules
│       ├── packageA
│       ├── app_A
│       │   └── nodule_modules
│       │       └── packageA
│       └── app_B
│       │   └── nodule_modules
│       │       └── packageA


从上图可以看出,packageA依赖包被安装了3次,造成了2次安装冗余。

而如果采用peerDepenedency来下载,就可以避免这个核心依赖库被重复下载的问题。还是上面那个场景,我们在项目app_A和app_B的package.json文件里的peerDependencies字段声明一下核心依赖库packageA,然后在根目录的package.json文件里的dependencies字段也声明一下packageA。接着再执行npm install,生成的依赖结构就会如下图所示:

├── HelloHWCloud
│   └── node_modules
│       ├── packageA
│       ├── app_A
│       └── app_B


如上图所示,packageA就只会被安装一次。因此,npm 从版本v7开始,install就默认以peerDependencies的方式去下载了:

如果用户在根目录的package.json文件里显式依赖了核心库,那么各个子项目里的peerDepenedencies声明就可以忽略
如果用户没有显式依赖核心库,那么就按照子项目的peerDepenedencies中声明的版本将依赖安装到项目根目录里
而方式2就会导致一个问题:用户依赖的包版本与各个子项目依赖的包版本相互不兼容,那么就会报错(无法解析依赖树的问题(依赖冲突))让用户自行去修复,因而导致安装过程的中断。(因为是从npm v7引入的,因此npm v3-v6就不会发生这个错误)

npm install xxxx --legacy-peer-deps命令是什么?为什么可以解决下载时候产生的依赖冲突呢?


npm install xxxx --legacy-peer-deps命令与其说是告诉npm要去干什么,不如说是告诉npm不要去干什么。

legacy的意思:遗产/(软件或硬件)已过时但因使用范围广而难以替代的;而npm install xxxx --legacy-peer-deps命令用于绕过peerDependency里依赖的自动安装;它告诉npm忽略项目中引入的各个依赖模块之间依赖相同但版本不同的问题,以npm v3-v6的方式去继续执行安装操作。

所以其实该命令并没有真的解决冲突,而是忽略了冲突,以“过时”(v3-v6)的方式进行下载操作。

参考资料
https://classic.yarnpkg.com/en/docs/dependency-types
https://github.blog/2021-02-02-npm-7-is-now-generally-available/
https://blog.logrocket.com/whats-new-in-npm-v7/
https://stackoverflow.com/questions/66239691/what-does-npm-install-legacy-peer-deps-do-exactly-when-is-it-recommended-wh
 点击关注,第一时间了解华为云新鲜技术~​
————————————————
版权声明:本文为CSDN博主「华为云开发者联盟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/devcloud/article/details/124469666

http://www.lbrq.cn/news/1570555.html

相关文章:

  • 营销网站建设流程图/学大教育一对一收费价格表
  • 国内网站用django做的/网络广告策划案
  • 网站如何做超级链接/网络营销策略包括哪些
  • 如何给公司做网站/搜索百度网页版
  • 世界500强企业数量/郑州厉害的seo顾问
  • 欧美网站建设风格特点/制作网页完整步骤代码
  • 做眼镜网站草图有什么原则/更先进的seo服务
  • 网站空间管理站/接app推广接单平台
  • 重庆找做墩子网站/外贸怎么找客户资源
  • 学php动态网站开发好就业/郑州网站营销推广
  • 做一个介绍网站多少钱/化工网站关键词优化
  • 网络营销网站建设论文/三一crm手机客户端下载
  • wordpress使用环境/企业网站设计优化公司
  • 网站开发各个文件/官网优化包括什么内容
  • 企业网站素材/平谷头条新闻
  • 电影大型网站制作/制作网站的步骤
  • 网站的模版可以换吗/seo优化工作内容
  • 重庆网站建设仿站/怎样在百度上发布广告
  • 商洛网站建设公司电话/nba西部排名
  • 专门 做鞋子团购的网站有哪些/最近国际新闻大事20条
  • 南京本地网站建设/线上销售平台如何推广
  • 如何做一个购物网站/百度收录官网
  • 女生做网站主题有哪些/搜索引擎优化实训报告
  • 商城手机网站建设多少钱/品牌推广活动策划案例
  • 青岛网页设计公司/自己怎么优化网站排名
  • 即墨网站建设/青岛关键词推广seo
  • 网站制作优质公司/国家优化防控措施
  • 合肥专业做网站的公司哪家好/反向链接查询
  • 如何做微商城网站建设/佛山网站seo
  • 怎么形容网站做的很好/百度推广怎么优化
  • 如何选择适合工业场景的物联网网关?
  • 【安卓,问题记录】ImageView 在布局顺序上位于 Button 上方,却出现图像内容被 Button 遮挡
  • kernel pwn 入门(四) ret2dir详细
  • AI-调查研究-49-大数据调研报告 发展历程:从概念诞生到多元化生态1997-2025
  • 华为发布AI推理新技术,降低对HBM内存依赖
  • POI导入时相关的EXCEL校验