0x000 概述
本篇文章承接上文,记录的v2和v3版本在包管理方面的异同,基于阅读官方原文整理简化。
0x001 v2 管理方式
假设有模块A 、B 、C ,A 依赖B1.0 ,C 依赖B2.0 ,我们可以得出以下依赖图:
接着我们创建一个App ,同时依赖A 和C ,此时便会出现依赖地狱
npm 不使用单一的B 版本包,而是让不同的B 版本同时存在,只不过存在在各自的依赖包中,
看起来就像这样
0x002 v3管理方式
v3 和v2 对于依赖管理的方式不太一样,v3 希望让依赖扁平化。
假设我们有一个模块A ,A 依赖B
创建一个项目依赖A
此时执行npm install ,npm 将会同时安装模块A 、B ,并且扁平的放在项目的node_modules 文件夹下
此时我们再依赖一个模块C ,C 依赖B2.0
因为我们已经让B1.0 扁平化了,所以我们没有办法让B2.0 也扁平化,所以,这时候的B2.0 使用和v2 相同的处理方式。
此时的node_modules 文件夹如下所示
0x003 v3 包的复制和取消复制
假设我们有一个项目
添加依赖D 依赖B2.0 ,此时:
添加依赖D 依赖B1.0 ,此时
升级依赖A2.0 依赖B2.0 ,此时
升级依赖E2.0 依赖B2.0 ,此时
执行npm dedupe
查看node_modules 文件夹:
0x004 资源
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|