這是npm3中作出的改變,也是最大的改變之一舔哪,5.0 用的是 npm3。npm -v可以查看 npm 版本槽棍。
個(gè)人認(rèn)為捉蚤,這一改變還是有很多好處的。
首先炼七,npm 2.0 時(shí)代各個(gè)模塊中的公共模塊沒(méi)有做到復(fù)用缆巧,都有自己的一份依賴(lài),這些模塊造成了很大的冗余豌拙。這種方式的一大弊端就是導(dǎo)致node_modules的目錄層級(jí)非常的深陕悬,以至在 windows 下會(huì)出現(xiàn)node_modules路徑過(guò)長(zhǎng),無(wú)法刪除按傅。
其次墩莫,2.0 的管理方式不太適合做前端的包管理,比如我用 npm 安裝了一個(gè)插件依賴(lài)了jQuery 1.10逞敷,而另一個(gè)插件依賴(lài)了jQuery 1.11.3狂秦,npm 會(huì)把這兩個(gè)版本的 jQuery 分別下載到對(duì)應(yīng)插件的node_modules中。最后打包壓縮的時(shí)候就會(huì)出現(xiàn)壓縮了兩個(gè) jQuery 的情況推捐,這在 node 應(yīng)用中沒(méi)有問(wèn)題裂问,但是在前端項(xiàng)目中就不行了,這顯然不是我們所需要的牛柒。npm3 中把依賴(lài)扁平化處理就很好的解決了這個(gè)問(wèn)題堪簿,它只會(huì)在 node_modules 中保留一個(gè)較新的 jQuery。
對(duì)于你評(píng)論中說(shuō)的 hbuilder 的問(wèn)題皮壁,有可能和這種目錄結(jié)構(gòu)有關(guān)椭更,如果有關(guān),那也是 hbuilder 的一個(gè) bug蛾魄,你可以換用 npm2 來(lái)安裝測(cè)試一下