[英]Joining development NPM dependencies into single meta-package
有沒有辦法創建一個meta-package, package.json
:
a)包含一個依賴項列表,這些依賴項不用於構建此包;
b)強制NPM安裝這些deps,當這個非常多的元數據包添加到項目中時,都用於開發的生產?
問題是我的樣板中有幾十個包(prod和dev),我從一個項目復制到另一個項目。 我想有一個私有包,它曾經添加到項目的package.json
告訴npm其他prod和dev deps要安裝。 我想改進使用樣板的過程,因為當我改變它的時候,我(實際上是我的意願,而不是執行)在這個樣板的基礎上構建的所有項目中進行這些更改,還在開發中。
我已經設法將我經常使用的所有deps添加到我的meta-package的package.json
production
部分。 但是這種方法存在兩個問題:
1.構建元數據包時會安裝很多不必要的軟件包(我必須構建它,因為它包含ES6 / 7中的一些幫助程序);
2.我仍然需要將生產代碼列表復制/粘貼到每個新項目中,以提供NPM信息,在生產服務器上安裝什么。
非npm解決方案也是受歡迎的。
好吧,它似乎很容易做到:
1.首先,需要將樣板中使用的所有包分成兩組 - 運行app( production
)所需的,以及構建和調試( development
)所需的。
2.創建production
元包( meta-prod
)。 package.json內容:
...
"dependencies": {
< Here we have the list of production dependencies. >
},
...
如有必要,編譯它並推送到git(即github)。
3.創建development
元包( meta-dev
)。 package.json內容:
...
"dependencies": {
< Here we have the list of development dependencies. >
< Please note, that this is in the 'dependencies' section, >
< not the 'devDependencies'. >
},
...
把它推到git。
4.從樣板的package.json
刪除所有依賴項,並將其替換為:
...
"dependencies": {
"meta-prod": "git+https://github.com/your_account/meta-prod"
},
"devDependencies": {
"meta-dev": "git+https://github.com/your_account/meta-dev"
},
...
而已! 依賴關系進行安裝時,你npm install
,將被適當考慮npm
生產和發展。 現在您可以使用更小的package.json
樣板並從單點更新您的開發人員列表。
唯一的缺點是,當您使用git
包時, npm
不會捕獲版本更改,因此要更新應用程序中的包,您必須從node_modules
刪除元包目錄並重新運行npm install
。 要解決此問題,您可以將您的軟件包發布到npmjs.com(如果您是付費的npm客戶,最好將其發布為私有軟件包),並在每次更新時更改元軟件包版本。
這是樣板和元包示例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.