TL; DR如何在模塊化項目中配置不同的「子模塊」以儘可能簡單地相互引用?節點/ NPM管理本地包
我試圖圍繞NPM的本地包裹頭,特別是因爲他們涉及到一個模塊化項目。
我正在構建一個具有前端和後端API的Web應用程序。這些需要共享一個輸出簡單模型的包。我的項目目錄結構是這樣的:
package
├── api
│ ├── dist
│ │ └── <compiled files>
│ ├── node_modules
│ │ └── ...
│ ├── package.json
│ └── src
│ └── <source files>
├── application
│ ├── dist
│ │ └── <compiled files>
│ ├── node_modules
│ │ └── ...
│ ├── package.json
│ └── src
│ └── <source files>
└── models
├── dist
│ └── <compiled files>
├── node_modules
│ └── ...
├── package.json
└── src
└── <source files>
這兩個API和應用項目將使用模型,所以我抽象我的項目中的代碼到一個單獨的子模塊。
我已閱讀npm link
的文檔,這似乎是正確的方法,因爲據我瞭解,它符號鏈接node_modules
目錄中的程序包。這樣可以訪問現在存在的代碼,而不是在node_modules
中安裝副本。聽起來像我需要的,但有一個皺紋:我正在從幾個不同的地方開展這個項目:我的筆記本電腦,我的辦公室在工作,偶爾從家裏。此外,其他人將在未來爲這個項目做出貢獻。
我想盡可能簡單地讓一個新的貢獻者在開發中運行起來並運行。
目前,一種新的貢獻者會經過以下步驟:
- 克隆庫
cd
到車型目錄- 運行
npm install
npm link
- 運行
cd
到API DIR- 運行
npm install
npm link models
- 運行
cd
到應用程序目錄- 運行
npm install
npm link models
- 運行
- 開工
我想什麼做的(我認爲npm
應該是能夠做到的事情)是:
- 克隆庫
cd
到車型目錄- 運行
npm install
- 運行
cd
到API目錄- 運行
npm install
- 運行
cd
到應用程序目錄- 運行
npm install
- 運行
- 開工
我可以寫一個腳本來做到這一點,但它似乎是一個明顯的用例npm
,我懷疑它可能能夠做到這樣的事情。我想我可能會忽略一些東西,因爲我沒有在文檔中找到它。
真的需要有三個獨立的'package.json'嗎?你不應該只創建一個主'json'文件嗎?我還沒有處於需要的狀態 –
爲什麼? NPM已經爲你做了重複數據刪除。如果這是一個項目,則不需要三個package.json文件,只需使用一個。另一方面,如果這三個獨立項目是獨立的並且可以各自獨立發佈,那麼好消息是:npm已經可以自動爲您執行基於鏈接的重複數據刪除。 –
Re:多個package.json文件 - 最終,這些代碼將在多個docker容器中運行,我正在尋找一種方法來確保安裝不必要的依賴關係。例如,如果API容器需要應用程序容器沒有的依賴項,這似乎是避免將其安裝在不需要的地方的最簡單方法。 – Kryten