我剛剛升級到npm version 3,並注意到它所做的最大改變之一是它強制執行flat dependency tree。如何強制npm 3安裝嵌套的依賴關係?
現在,您的依賴關係將被最大限度地平放。只要有可能,您的所有依賴項及其依賴項和他們的依賴項都將安裝在您的項目的
node_modules
文件夾中,且不會嵌套。當兩個(或更多)模塊具有衝突的依賴關係時,您只會看到嵌套在另一個下面的模塊。
因此,舉例來說,如果包一個依賴於包乙,當你npm install A
你會得到這個文件的結構:
--- root/
|--- node_modules/
|--- A/
|--- B/
,而不是舊的文件結構從版本2或更低:
--- root/
|--- node_modules/
|--- A/
|--- node_modules/
|--- B/
我遇到的第一個問題(我肯定不是最後一個問題)是:
程序包A不知道npm v3的行爲並依賴於程序包B。但A採用舊的(v2)文件結構,因爲它的代碼中有node_modules/B
,而不是正確的../node_modules/B
。現在從A的代碼將不會編譯,因爲它正在尋找B/
在錯誤的目錄中。
如果我不喜歡嘮叨開發人員修復代碼並等待一個的更新,我不知道是否有一種方法,我可以設置一個選項,這將迫使NPM安裝一個的它自己的node_modules
文件夾內的依賴關係,npm v2也會這樣做。
我遇到同樣的問題,我希望有,因爲這一個你必須去一個更好的解決方案:'CD node_modules/A && NPM install'然後'CD node_modules/A/node_modules/B && NPM安裝「等......從我所瞭解的情況來看,所有的包必須遵循新的npm句柄依賴關係,才能使用npm 3.0,對吧? – Gabin
@加賓據我所知,你是對的。它使升級依賴成爲一場噩夢。 – chharvey