

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# npm 標籤處理
<a name="npm-tags"></a>

 npm 登錄檔支援*標籤*，這些是套件版本的字串別名。您可以使用標籤來提供別名，而不是版本號碼。例如，您可能有一個具有多個開發串流的專案，並為每個串流使用不同的標籤 （例如 、`stable``beta`、`dev`、`canary`)。如需詳細資訊，請參閱 npm 網站上的 [dist-tag](https://docs.npmjs.com/cli/dist-tag)。

 根據預設，npm 會使用 `latest`標籤來識別套件的目前版本。 `npm install {{pkg}}`（不含 `@{{version}}`或 `@{{tag}}` 指標） 會安裝最新的標籤。一般而言，專案只會使用最新的標籤來提供穩定的發行版本。其他標籤用於不穩定或發行前版本。

## 使用 npm 用戶端編輯標籤
<a name="editing-tags-with-the-npm-client"></a>

 CodeArtifact `add`儲存庫中的三個`npm dist-tag`命令 (`rm`、 和 `ls`) 函數與[預設 npm 登錄](https://registry.npmjs.com/)檔中的命令相同。

## npm 標籤和 CopyPackageVersions API
<a name="tags-and-cpv"></a>

當您使用 `CopyPackageVersions` API 複製 npm 套件版本時，所有別名為該版本的標籤都會複製到目的地儲存庫。當複製的版本具有也存在於目的地的標籤時，複製操作會將目的地儲存庫中的標籤值設定為符合來源儲存庫中的值。

例如，假設儲存庫 S 和儲存庫 D 都包含具有最新標籤集的單一版本`web-helper`套件，如下表所示。


****  

| 儲存庫 | 套件名稱 | 套件標籤 | 
| --- | --- | --- | 
| S | `web-helper` |  *最新* (1.0.1 版的別名） | 
| D | `web-helper` |  *最新* (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 的詳細資訊，請參閱[在儲存庫之間複製套件](copy-package.md)。

## npm 標籤和上游儲存庫
<a name="tags-and-upstreams"></a>

當 npm 請求套件的標籤，且該套件的版本也出現在上游儲存庫中時，CodeArtifact 會先合併標籤，再將其傳回用戶端。例如，名為 R 的儲存庫具有名為 U 的上游儲存庫。下表顯示兩個儲存庫中存在`web-helper`的名為 的套件標籤。


****  

| 儲存庫 | 套件名稱 | 套件標籤 | 
| --- | --- | --- | 
| R | `web-helper` |  *最新* (1.0.0 版的別名） | 
| U | `web-helper` |  *alpha* (1.0.1 版的別名） | 

在此情況下，當 npm 用戶端從儲存庫 R 擷取`web-helper`套件的標籤時，它會同時接收*最新的*標籤和 *Alpha* 標籤。標籤指向的版本不會變更。

當上游和下游儲存庫中的相同套件上都存在相同的標籤時，CodeArtifact 會使用*上游*儲存庫中存在的標籤。例如，假設 *webhelper* 上的標籤已修改為如下所示。


****  

| 儲存庫 | 套件名稱 | 套件標籤 | 
| --- | --- | --- | 
| R | `web-helper` |  *最新* (1.0.0 版的別名） | 
| U | `web-helper` |  *最新* (1.0.1 版的別名） | 

在此情況下，當 npm 用戶端從儲存庫 R 擷取套件 *Web-helper* 的標籤時，*最新的*標籤會別名為 *1.0.1* 版，因為這是上游儲存庫中的標籤。這可讓您透過執行 ，在尚未出現在下游儲存庫的上游儲存庫中輕鬆使用新的套件版本`npm update`。

在下游儲存庫中發佈新版本的套件時，在上游儲存庫中使用 標籤可能會造成問題。例如，假設套件 *Web-helper* 上的最新標籤在 R 和 U 中都相同。


****  

| 儲存庫 | 套件名稱 | 套件標籤 | 
| --- | --- | --- | 
| R | `web-helper` |  *最新* (1.0.1 版的別名） | 
| U | `web-helper` |  *最新* (1.0.1 版的別名） | 

當 1.0.2 版發佈至 R 時，npm 會將*最新的*標籤更新至 1.0.2。


****  

| 儲存庫 | 套件名稱 | 套件標籤 | 
| --- | --- | --- | 
| R | `web-helper` |  *最新* (1.0.2 版的別名） | 
| U | `web-helper` |  *最新* (1.0.1 版的別名） | 

不過，npm 用戶端永遠不會看到此標籤值，因為 U 中*最新的* 值是 1.0.1。在發佈 1.0.2 之後，立即`npm install`針對儲存庫 R 執行 會安裝 1.0.1，而不是剛發佈的版本。若要安裝最近發佈的版本，您必須指定確切的套件版本，如下所示。

```
npm install web-helper@1.0.2
```