本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
npm 登錄檔支援標籤,這些是套件版本的字串別名。您可以使用標籤來提供別名,而不是版本號碼。例如,您可能有一個具有多個開發串流的專案,並為每個串流使用不同的標籤 (例如 、stable
beta
、dev
、canary
)。如需詳細資訊,請參閱 npm 網站上的 dist-tag
根據預設,npm 會使用 latest
標籤來識別套件的目前版本。 npm install
(不含 pkg
@
或 version
@
指標) 會安裝最新的標籤。一般而言,專案只會使用最新的標籤來提供穩定的發行版本。其他標籤用於不穩定或發行前版本。tag
使用 npm 用戶端編輯標籤
CodeArtifact add
儲存庫中的三個npm dist-tag
命令 (rm
、 和 ls
) 函數與預設 npm 登錄
npm 標籤和 CopyPackageVersions API
當您使用 CopyPackageVersions
API 複製 npm 套件版本時,所有別名為該版本的標籤都會複製到目的地儲存庫。當複製的版本具有也存在於目的地的標籤時,複製操作會將目的地儲存庫中的標籤值設定為符合來源儲存庫中的值。
例如,假設儲存庫 S 和儲存庫 D 都包含具有最新標籤集的單一版本web-helper
套件,如下表所示。
儲存庫 | 套件名稱 | 套件標籤 |
---|---|---|
S |
|
最新 (1.0.1 版的別名) |
D |
|
最新 (1.0.0 版的別名) |
CopyPackageVersions
被叫用將 web-helper
1.0.1 從 S 複製到 D。操作完成後,儲存庫 D web-helper
中的 latest
標籤別名為 1.0.1,而不是 1.0.0。
如果您需要在複製後變更標籤,請使用 npm dist-tag
命令直接在目的地儲存庫中修改標籤。如需 CopyPackageVersions
API 的詳細資訊,請參閱在儲存庫之間複製套件。
npm 標籤和上游儲存庫
當 npm 請求套件的標籤,且該套件的版本也出現在上游儲存庫中時,CodeArtifact 會先合併標籤,再將其傳回用戶端。例如,名為 R 的儲存庫具有名為 U 的上游儲存庫。下表顯示兩個儲存庫中存在web-helper
的名為 的套件標籤。
儲存庫 | 套件名稱 | 套件標籤 |
---|---|---|
R |
|
最新 (1.0.0 版的別名) |
U |
|
alpha (1.0.1 版的別名) |
在此情況下,當 npm 用戶端從儲存庫 R 擷取web-helper
套件的標籤時,它會同時接收最新的標籤和 Alpha 標籤。標籤指向的版本不會變更。
當上游和下游儲存庫中的相同套件上都存在相同的標籤時,CodeArtifact 會使用上游儲存庫中存在的標籤。例如,假設 webhelper 上的標籤已修改為如下所示。
儲存庫 | 套件名稱 | 套件標籤 |
---|---|---|
R |
|
最新 (1.0.0 版的別名) |
U |
|
最新 (1.0.1 版的別名) |
在此情況下,當 npm 用戶端從儲存庫 R 擷取套件 Web-helper 的標籤時,最新的標籤會別名為 1.0.1 版,因為這是上游儲存庫中的標籤。這可讓您透過執行 ,在尚未出現在下游儲存庫的上游儲存庫中輕鬆使用新的套件版本npm update
。
在下游儲存庫中發佈新版本的套件時,在上游儲存庫中使用 標籤可能會造成問題。例如,假設套件 Web-helper 上的最新標籤在 R 和 U 中都相同。
儲存庫 | 套件名稱 | 套件標籤 |
---|---|---|
R |
|
最新 (1.0.1 版的別名) |
U |
|
最新 (1.0.1 版的別名) |
當 1.0.2 版發佈至 R 時,npm 會將最新的標籤更新至 1.0.2。
儲存庫 | 套件名稱 | 套件標籤 |
---|---|---|
R |
|
最新 (1.0.2 版的別名) |
U |
|
最新 (1.0.1 版的別名) |
不過,npm 用戶端永遠不會看到此標籤值,因為 U 中最新的 值是 1.0.1。在發佈 1.0.2 之後,立即npm install
針對儲存庫 R 執行 會安裝 1.0.1,而不是剛發佈的版本。若要安裝最近發佈的版本,您必須指定確切的套件版本,如下所示。
npm install web-helper@1.0.2