簡體   English   中英

如何安裝所有npm依賴項的特定版本/標簽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM