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 資源

相關文章
相關標籤/搜索