請直接看官網(wǎng)英文文檔毁渗,說的很明白的了:
npm v3 Dependency Resolution
如果要我簡單來說的話始花,就是 npm3 和 npm2 對于依賴的處理不一樣了
npm2所有項目依賴是嵌套關(guān)系脊髓,而npm3為了改進嵌套過多集峦、套路過深的情況仅胞,會將所有依賴放在第二層依賴中(所有依賴只嵌套一次,彼此平行饺藤,也就是平鋪的結(jié)構(gòu))
下面我來搬個磚包斑,簡單翻譯一下:
舉個栗子:
有一個模塊A,其依賴于B:
現(xiàn)在有一個app應(yīng)用依賴于A涕俗,執(zhí)行:
npm install
會自動安裝所有依賴罗丰。
npm3 會將模塊A 和模塊B 安裝到同一 node_modules 目錄下,二者是同級的再姑;
而npm2 依然會在node_modules 中安裝A萌抵,但是會將B 安裝到 A里面的node_modules, 也就是 A 和 B 是嵌套關(guān)系:
現(xiàn)在假如 app 需要另一個模塊C,并且 C 是依賴于另一個版本的B:
那么問題來了,在npm2中绍填,由于是層層嵌套的結(jié)構(gòu)霎桅,所以繼續(xù)嵌套即可,但是npm3如何處理呢讨永?已經(jīng)有一個 B v1.0版本了滔驶,又不能相同目錄下再來一個 B v2.0 ,那么變通一下住闯,將 B v2.0 嵌套在 C 中即可:
在終端中瓜浸,文件樹長得像下面這樣:
由于npm3 的改變澳淑,怕分不清彼此依賴了嗎比原?
沒關(guān)系,執(zhí)行 npm ls
依然可以看到模塊間彼此依賴關(guān)系:
如果你想查看最淺層的依賴關(guān)系,只需要:
npm ls --depth=0