本篇文章承接上文,記錄的v2和v3版本在包管理方面的異同,基於閱讀官方原文整理簡化。node
v2
管理方式假設有模塊A
、B
、C
,A
依賴B1.0
,C
依賴B2.0
,咱們能夠得出如下依賴圖:
git
接着咱們建立一個App
,同時依賴A
和C
,此時便會出現依賴地獄
github
npm
不使用單一的B
版本包,而是讓不一樣的B
版本同時存在,只不過存在在各自的依賴包中,
npm
看起來就像這樣segmentfault
v3
和v2
對於依賴管理的方式不太同樣,v3
但願讓依賴扁平化。app
假設咱們有一個模塊A
,A
依賴B
spa
建立一個項目依賴A
3d
此時執行npm install
,npm
將會同時安裝模塊A
、B
,而且扁平的放在項目的node_modules
文件夾下
code
此時咱們再依賴一個模塊C
,C
依賴B2.0
blog
由於咱們已經讓B1.0
扁平化了,因此咱們沒有辦法讓B2.0
也扁平化,因此,這時候的B2.0
使用和v2
相同的處理方式。
此時的node_modules
文件夾以下所示
v3
包的複製和取消複製假設咱們有一個項目
A1.0
B1.0
C1.0
依賴B2.0
添加依賴D
依賴B2.0
,此時:
添加依賴D
依賴B1.0
,此時
升級依賴A2.0
依賴B2.0
,此時
升級依賴E2.0
依賴B2.0
,此時
執行npm dedupe
查看node_modules
文件夾: