[英]How do I install specific versions / tags of all npm dependencies
我們有一個涉及多個節點模塊的大型項目。 我們的開發模型有3個層次。
我們希望將帶有開發,階段和生產標簽的模塊發布到我們的私有注冊表,並期望CI工具能夠基於這些標簽構建和安裝dep。
現在,為了部署到開發環境, CI只需在父模塊上進行npm安裝 ,即可安裝所有具有最新版本的部門。 這里不用擔心。
但是,如果CI希望將某些東西推到舞台/生產環境中 ,我該如何告訴npm install選擇標記為舞台/生產的依賴版本。
我知道是否要安裝特定版本的依賴項,可以指定npm install package @ version 。 但是由於我們有大量的依賴關系,因此這種方法對我們來說不可行。
我們也歡迎提出改變我們的發展模式的建議。 任何幫助,將不勝感激。
一種方法是將每個版本的版本存儲在單獨的package.json中。
例如,您可能有一個/ packages目錄,其中包含3個文件dev.package.json,stage.package.json,prod.package.json。
讓您的CI進程為其安裝環境復制正確的package.json。
我不確定CI的過程是什么樣子,因此我將舉一個使用shell腳本,即Linux的deploy.sh的示例。
#!/bin/bash
ENV='production'
if [[ `hostname` =~ \.development\. ]]; then
ENV='development'
fi
if [[ `hostname` =~ \.stage\. ]]; then
ENV='stage'
fi
echo "$ENV environment detected"
cp packages/$ENV.package.json package.json
npm install
假定服務器的主機名可以幫助指示環境,並且CI可以運行Shell腳本。 您可能需要不同的設置,具體取決於您的設置。
例如,您可能已經知道CI進程中使用的env了,而沒有主機名檢查部分,但是為了以防萬一,我添加了它。
使用這種類型的解決方案,您可以讓每個env package.json指定環境所需的確切模塊版本,並使用npm install來獲取它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.