npm入手笔记0x005-v2和v3包依赖管理的不一样

0x000 概述

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

0x001 v2管理方式

假设有模块ABCA依赖B1.0C依赖B2.0,咱们能够得出如下依赖图:
deps1.pnggit

接着咱们建立一个App,同时依赖AC,此时便会出现依赖地狱
deps2.pnggithub

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

看起来就像这样segmentfault

tree.png

0x002 v3管理方式

v3v2对于依赖管理的方式不太同样,v3但愿让依赖扁平化。app

假设咱们有一个模块AA依赖B
npm3deps1.pngspa

建立一个项目依赖A
npm3deps1.png3d

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

此时咱们再依赖一个模块CC依赖B2.0
npm3deps3.pngblog

由于咱们已经让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 资源

相关文章
相关标签/搜索