2

0x000 概述

本篇文章承接上文,记录的v2和v3版本在包管理方面的异同,基于阅读官方原文整理简化。

0x001 v2管理方式

假设有模块ABCA依赖B1.0C依赖B2.0,我们可以得出以下依赖图:
deps1.png

接着我们创建一个App,同时依赖AC,此时便会出现依赖地狱
deps2.png

npm不使用单一的B版本包,而是让不同的B版本同时存在,只不过存在在各自的依赖包中,
deps4.png

看起来就像这样

tree.png

0x002 v3管理方式

v3v2对于依赖管理的方式不太一样,v3希望让依赖扁平化。

假设我们有一个模块AA依赖B
npm3deps1.png

创建一个项目依赖A
npm3deps1.png

此时执行npm installnpm将会同时安装模块AB,并且扁平的放在项目的node_modules文件夹下
npm3deps2.png

此时我们再依赖一个模块CC依赖B2.0
npm3deps3.png

因为我们已经让B1.0扁平化了,所以我们没有办法让B2.0也扁平化,所以,这时候的B2.0使用和v2相同的处理方式。
npm3deps4.png

此时的node_modules文件夹如下所示
tree.png

0x003 v3包的复制和取消复制

假设我们有一个项目

  • A1.0

  • B1.0

  • C1.0依赖B2.0
    appsofar.png

添加依赖D依赖B2.0 ,此时:
npm3deps6.png

添加依赖D依赖B1.0,此时
npm3deps8.png

升级依赖A2.0依赖B2.0,此时
npm3deps10.png

升级依赖E2.0依赖B2.0,此时
npm3deps12.png

执行npm dedupe
npm3deps13.png

查看node_modules文件夹:
tree5.png

0x004 资源


followWinter
1.5k 声望82 粉丝

暂时没有