2015-10-15 50 views
37

我需要知道以下行爲是否正常。「npm install」將所有依賴關係安裝在node_modules目錄中,而不是將它們嵌套

當我npm install,每包從我的package.json和依賴,不要安裝嵌套了,但每個依賴安裝在node_modules目錄。這使我node_modules目錄吹,看起來像這樣:

Screenshot of node_modules directory

這種情況發生,因爲我更新了新公共管理和節點。

我現在運行:

npm -v 3.3.6 
node -v 4.2.1 
python 2.7 
windows 7 
wamp 

package.json文件看起來像這樣:

{ 
    "private": true, 
    "devDependencies": { 
    "gulp": "^3.8.8" 
    }, 
    "dependencies": { 
    "laravel-elixir": "^3.0.0", 
    "bootstrap-sass": "^3.0.0" 
    } 
} 

這是標準的laravel package.json文件。

有沒有辦法再次擁有嵌套的目錄,因爲我不喜歡這樣一個有超過100個子目錄的文章。

回答

33

這就是行爲npm 3根據this npm blog

+0

謝謝sagie,我想沒有辦法讓它再次嵌套以避免臃腫的目錄,是嗎? (也必須等待5分鐘,然後才能接受你的答案爲正確的答案) – LoveAndHappiness

+9

平坦更好,因爲我看到它。作爲一個windows用戶,刪除太多嵌套模塊真的很可怕,因爲它傳遞256個字符的速度非常快(或者是1024,不記得)。另外,當你升級模塊時,我可以幫助你升級模塊,因爲它可以更好地重用現有的安裝,並且不會替換升級的模塊下的所有東西,因爲它的依賴關係沒有改變。底線,這種方式更快更清潔。 – sagie

+0

我一直試圖解決NPM大聲笑...很高興我跑過這個或我仍然會尋找解決方案=) – afreeland

57

更新:正如埃裏克Pukinskis在評論中提到: 作爲NPM 3.5,爲--legacy-bundling支持已被刪除。


是的,有一種方法已經改變故宮的(3版作爲寫這篇文章)的默認行爲再次嵌套目錄:

  1. 刪除當前存在的node_modules文件夾。

  2. 泰爾NPM與遺留捆綁爲這一個安裝安裝:

    npm install --legacy-bundling

A 「永久的」 替代:

  • 集您的npm配置始終使用舊版捆綁...

    npm set legacy-bundling=true

  • ..和照常運行:

    npm install

  • 注:的讀取與傳統的捆綁依賴將花費更多的時間,因爲許多幾個不同的版本相同的依賴性會安裝。

    聲明:作爲非Windows用戶,我不需要平面依賴關係,並且希望輕鬆地找到自我聲明的依賴關係,以支持自動重複數據刪除。由於在沒有傳統捆綁的情況下安裝npm依賴關係已經花費了大量時間,我通常願意花這些額外的幾分鐘安裝時間。在Laravel Elixir安裝程序中使用bootstrap(非sass),增加了字體和jquery,它可以恢復到之前700+(...)的5個目錄。

    +1

    這個答案對我來說對我的具體情況非常有用。在這裏描述後代:我一直在嘗試爲現有節點項目構建具有依賴關係的package.json。使用'npm install <我需要的軟件包列表> --legacy-bundling --save'只寫入了package.json中的直接依賴項。然後我做了'rm -rf node_modules && npm install',以取回新的扁平node_modules目錄。這對我來說是兩全其美的。 –

    +3

    我也認爲這是正確的答案,因爲它直接回答OP中肯定的 –

    +2

    從npm 3.5開始,對「--legacy-bundling」的支持已經被刪除。 –

    相關問題