npm是如何处理多版本依赖的?

两种模式

nest模式

基本行为:

require/import时,向上递归查找依赖,直到全局node_modules结束。

特点:

每个包在自己内部管理依赖,结构清晰简单。

不足:

如果A包B包都依赖了axios,就会导致axiosA包B包node_modules中各安装一次,产生重复安装。

flat模式

基本模式:

require/import时,向上递归查找依赖,直到全局node_modules结束。

特点:

npm install时,npm会将axios这种被多个包依赖的包提升到项目根目录的node_modules中。减少重复安装。

不足:

重复安装只是被缓解了,没有完全解决。

为什么说flat模式并没有完全解决重复安装的问题?

考虑如下依赖关系:

如果对上图应用flat模式,我们会遇到一个问题:

npm遍历A包B包,发现公共依赖axios@1.0,决定将axios@1.0提升到项目根目录的node_modules中。

接下来遍历B包C包,发现也有公共依赖axios@2.0,但是根目录已经被axios@1.0占用了,所以只能放弃提升,也就又出现了nest模式的重复安装问题。

技术前沿拓展

前端开发,你的认知不能仅局限于技术内,需要发散思维了解技术圈的前沿知识。细心的人会发现,开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。

介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。

看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

相关推荐
happymaker06268 小时前
web前端学习日记——DAY06(js基础语法与数据类型)
前端·javascript·学习
FlyWIHTSKY8 小时前
父子组件参数传递
前端·javascript·vue.js
紫_龙8 小时前
最新版vue3+TypeScript开发入门到实战教程之生命周期函数
前端·javascript·typescript
小江的记录本9 小时前
【反射】Java反射 全方位知识体系(附 应用场景 + 《八股文常考面试题》)
java·开发语言·前端·后端·python·spring·面试
孟陬9 小时前
国外技术周刊 #4:这38条阅读法则改变了我的人生、男人似乎只追求四件事……
前端·人工智能·后端
工边页字9 小时前
cursor接上figma mcp ,图形图像模式傻瓜式教学(包教包会版)
前端·人工智能·ai编程
callJJ9 小时前
Ant Design Table 批量操作踩坑总结 —— 从三个 Bug 看前端表格开发的共性问题
java·前端·经验分享·bug·管理系统
郭庆汝9 小时前
Ubuntu安装Node.js
linux·ubuntu·node.js
wellc9 小时前
如何在Windows系统上安装和配置Node.js及Node版本管理器(nvm)
windows·node.js
我去流水了9 小时前
【独家免费】【亲测】在linux下嵌入式linux的web http服务【Get、Post】,移植mongoose,post上传文件
linux·运维·前端