2017-09-28 243 views
1

我正在開發各種Angular 2項目,我想在多個項目之間共享node_modules文件夾。我想創建一個這樣的結構:在不同的項目之間共享node_modules

MainFolder 
- Project1 
- Project2 
- package.json 

所以我會只有1個package.json所有的項目。我的回答:可以做到這一點嗎? 如果可能的話,我得和-g共進午餐npm install? 我不明白-g是如何工作的。 有人可以給我說明如何繼續? 非常感謝

我忘了說我用angular-cli構建項目。

+0

你試過了嗎? – msanford

+0

我在MainFolder中嘗試過npm install -g,但是要運行Project1我還需要在Project1文件夾中午餐npm安裝?因爲我無法運行Project1 ... – bigskull

回答

0

Here是上的各種文檔NPM安裝參數

在全局模式(即,使用-g或--global追加到命令)時,它安裝 當前包上下文(即,當前工作 目錄)作爲一個全球性的包。基於環境

的-g的安裝位置,可以發現,你可以達到你想要的是有兩個項目一個解決方案here

一種方法和每一個項目路線使用它自己的lazy loaded module

除非您有特定的業務需求來共享資源,否則最好將每個項目與自己的資源和配置分開。

0

-g代表全局安裝,即您安裝的軟件包將適用於所有應用程序。

爲什麼要共享node_modules和package.json文件?

讓他們分別爲每個單獨的項目。如果你需要分享你的項目,你可以共享你的package.json,而不是共享node_modules文件夾。另外要指出的是,如果您通過列出其名稱來手動安裝軟件包,那麼您可以使用-g(全局)標誌,但是如果您確實只使用npm install,那麼您的軟件包將不會作爲全局軟件包安裝。

+1

我應該共享node_modules文件夾以避免在每個項目中都有該文件夾。如果我在各種項目中放置相同的package.json並運行npm install,那麼每個項目中都有相同的node_modules? – bigskull

+1

如果您在每個項目中運行npm install,那麼是的,每個項目中都有相同的node_modules。 但是,每個項目都應該有一個單獨的node_modules,就好像您開始測試新事物一樣,您將不得不爲每個項目維護單獨的package.json。這是道德方式 –

+1

因此,更好的方法是爲每個項目保留一個package.json,並在每個文件夾中啓動npm install,即使這會生成相同的node_modules文件夾。這是正確的嗎? – bigskull

1

我在小型/學習/測試項目中使用的方式是(我稱之爲)「git項目」。基本上我通過git來管理各種項目,並且只是「加載」我想要處理的項目。當然,如果你想同時訪問多個項目,這是行不通的。

我喜歡使用git客戶端來達到這個目的,因爲它更容易將我現有的「項目」可視化。

所以我的工作流程是這樣的......

  1. 創建我的主/基文件夾。這將包含git repo,單個node_modules文件夾以及所有項目應該通用的其他內容。
  2. 我創建基本的package.json文件(使用npm init)。沒有描述,沒有什麼,只是基本的骨架package.json文件。(但是,如果你知道你將在你的所有項目中使用某些軟件包,你可以先安裝它們,這樣它們將被添加到package.json作爲你的「基本」模塊。)
  3. 現在我檢查裸包.json放入回購站(以及其他您可能希望在所有項目中都有的東西,但通常只是package.json文件)。這將是所有項目的最基本的起始分支。
  4. 一旦簽入,我在git倉庫中創建了一個分支。這將是「項目1」 - 或者任何你想稱之爲的項目。然後根據需要建立你的項目,安裝模塊,檢查修改等等。
  5. 當我想要開始一個新項目時,我只需檢查第一個裸機項目(它只是空的,或者幾乎爲空,package.json文件),並關閉另一個分支。這將是我的第二個項目。

,...等

所以,最主要的是,每一個新的「項目」將在git倉庫一個新的分支,並創建一個新的項目,只需切換回原來的裸骨頭,並做一個新的分支。

當然,也可以在項目中創建分支。這完全是關於命名約定。例如,你可以在「P_」或「PROJECT_」等前綴一個新的項目分支,這樣你就可以快速地告訴你的git客戶端哪些分支是項目。當然,如果您只需要在現有項目中使用新的分支,就可以使用不同的命名方案。這基本上是我如何去做的。

您可能不喜歡這個工作流程,但這種方式我不需要全局安裝軟件包。當我做備份時,我可以簡單地刪除單個(可能是巨大的)node_modules文件夾。所有與項目相關的模塊都可以通過檢查某個特定項目的分支來重新安裝,並在其package.json上運行「npm install」。希望它是有道理的。