2017-07-28 74 views
0

我正在處理一個較大的項目,該項目被拆分爲多個npm包。軟件包之間有幾個依賴關係。整個代碼庫存儲在主目錄是這樣的:如何在安裝時自動鏈接npm包?

main/ 
    pkg1/ 
    pkg2/ 
    ... 

假設pkg2的取決於的pkg1,所以在main/pkg2/package.json我:

"dependencies": { 
    "pkg1": "^0.1.0" 
} 

我已經聯繫我包起來使用npm link。但是,當我開始在新機器上開發或出於某種原因,我必須重新安裝軟件包時,我不能簡單地在pkg2/中說npm install。它會失敗,因爲找不到pkg1。 (它沒有發佈,但無論如何,我想要本地版本,因爲我正在開發這兩個包)。

當然,我可以手動完成所有鏈接,而不是打電話npm install,但這很麻煩。有沒有辦法一步到位呢?

我以前的研究:

This問題提出了編寫預裝腳本,但我不想讓生產連接,只有在開發環境中,爲another答案要點出來。

我也試過npm linkpkg1/然後npm install --linkpkg2/。根據手冊,

在某些情況下,--link參數將導致npm將全局安裝鏈接到本地​​空間。

雖然不是我的情況。

回答

0

您可以使用zelda。由Feross撰寫,它正是爲這個目的而設計的。

+0

看起來像一個很好的解決方案。謝謝! – kkeri

0

我不是這樣做的粉絲;我通常更喜歡運行本地存儲庫或使用git URL來處理這樣的依賴。

這就是說,如果你想繼續使用npm鏈接,你總是可以使用預安裝腳本的方法,但不要使用預安裝密鑰。

"autolink": "cd ../project1 && npm link && cd ../project2 && npm link project1_name", 

然後在你的命令行,你可以做$ npm run autolink當你第一次安裝一個開發ENV。

+0

保羅,你可以鏈接我的一些資源,描述你的首選方式?我不太明白你的意思,但它可能是有用的,因爲我打算在Github上託管我的軟件包。無論如何,感謝自動鏈接腳本的想法。同時我發現我真正的問題是要找到正確的訪問包目錄和運行腳本的順序。當我有一些包時,這並不明顯。 – kkeri