2015-05-18 106 views
1

我想展示一個包含多個本地包的項目結構,我希望它們共享相同的node_modules文件夾,以便npm安裝速度快,並且磁盤空間使用率適中。每個獨立使用的軟件包有幾百MB的依賴關係。npm安裝前綴

node_modules 
main 
    - package.json 
packages 
    lib1 
    - package.json 
    lib2 
    - package.json 

作爲示例的每個包依賴於反應,咽和的WebPack,這將被定義爲在每個package.json依賴性。

我想解決如何有一個簡單的腳本來安裝每個包依賴到node_modules,但我不能讓它工作。

cd main 
echo "prefix = .." > .npmrc 
npm install 
for each in packages 
    cd package 
    echo "cat prefix = .." > .npmrc 
    npm install 

但是,我不能讓它工作。

npm install --prefix ..如果沒有包名稱也無法正常工作,但由於我試圖在克隆後安裝所有包,因此它不起作用。

回答

0

你其實可以specify local paths爲您的依賴直接在頂級的package.json:

... 
"dependencies": { 
    "lib1": "./pacakges/lib1", 
    ... 
} 
... 

然後,你可以做一個npm install在頂級目錄,它會安裝依賴,只是與其他任何節點模塊一樣!

+0

這似乎使lib1的副本,但?例如node_modules/lib1/node_modules現在存在... – Chris

+0

@Chris你是對的...我猜這不會真的解決你想要做的事... – lxe

+0

可悲的是,我認爲這是我的解決方案今天早些時候,然後有點內臟,當它不工作...我的另一個問題是,即使在正確填充父節點的node_modules(以便我的應用程序工作),本地軟件包中的下一個「npm install」將在本地安裝所有東西 - 如果我可以解決這個問題,我會很高興,並會在父文件夾中維護一個package.json。 – Chris

0

@克里斯,儘管你想的package.json爲自己而工作,使事情快速部署,你可以只是壓縮你的npm_module文件夾,並添加到混帳回購協議,並同時部署中,可以只是解壓的文件夾和運行

npm rebuild 

這會快很多。
希望這會幫助你。