

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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 리포지토리에서는 세 개의 `npm dist-tag` 명령(`add`, `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` |  **latest(버전 1.0.1의 별칭) | 
| D | `web-helper` |  **latest(버전 1.0.0의 별칭) | 

 `CopyPackageVersions`는 `web-helper` 1.0.1을 S에서 D로 복사하기 위해 간접적으로 호출됩니다. 작업이 완료된 후 리포지토리 D의 `web-helper`에서 `latest` 태그는 1.0.0이 아닌 1.0.1로 별칭을 지정합니다.

복사 후 태그를 변경해야 하는 경우, `npm dist-tag` 명령을 사용하여 대상 리포지토리에서 직접 태그를 수정합니다. `CopyPackageVersions` API에 관한 자세한 내용은 [리포지토리 간 패키지 복사](copy-package.md)를 참조합니다.

## npm 태그와 업스트림 리포지토리
<a name="tags-and-upstreams"></a>

npm이 패키지에 대한 태그를 요청하고 해당 패키지의 버전이 업스트림 리포지토리에도 있을 때 CodeArtifact는 태그를 병합한 후 클라이언트에 반환합니다. 예를 들면, R이라는 리포지토리에 U라는 업스트림 리포지토리가 있습니다. 다음 표에는 두 리포지토리에 모두 존재하는 `web-helper`라는 패키지의 태그가 나와 있습니다.


****  

| 리포지토리 | 패키지 이름 | 패키지 태그 | 
| --- | --- | --- | 
| R | `web-helper` |  *latest*(버전 1.0.0의 별칭) | 
| U | `web-helper` |  **alpha(버전 1.0.1의 별칭) | 

이 경우, npm 클라이언트가 리포지토리 R에서 `web-helper` 패키지의 태그를 가져오면 **latest 태그와 **alpha 태그를 모두 받습니다. 태그가 가리키는 버전은 변경되지 않습니다.

업스트림 리포지토리와 다운스트림 리포지토리의 동일한 패키지에 동일한 태그가 있는 경우, CodeArtifact는 **업스트림 리포지토리에 있는 태그를 사용합니다. 예를 들어, **webhelper의 태그가 다음과 같이 수정되었다고 가정해 보겠습니다.


****  

| 리포지토리 | 패키지 이름 | 패키지 태그 | 
| --- | --- | --- | 
| R | `web-helper` |  *latest*(버전 1.0.0의 별칭) | 
| U | `web-helper` |  **latest(버전 1.0.1의 별칭) | 

이 경우, npm 클라이언트가 리포지토리 R에서 패키지 **web-helper의 태그를 가져오면 **latest 태그는 버전 **1.0.1에 별칭을 지정합니다. 이는 업스트림 리포지토리에 있기 때문입니다. 이렇게 하면 `npm update`를 실행하여 다운스트림 리포지토리에 아직 없는 업스트림 리포지토리의 새 패키지 버전을 쉽게 사용할 수 있습니다.

다운스트림 리포지토리에 패키지의 새 버전을 게시할 때 업스트림 리포지토리의 태그를 사용하면 문제가 될 수 있습니다. 예를 들어, 패키지 **web-helper의 latest 태그가 R과 U에서 모두 동일하다고 가정해 보겠습니다.


****  

| 리포지토리 | 패키지 이름 | 패키지 태그 | 
| --- | --- | --- | 
| R | `web-helper` |  **latest(버전 1.0.1의 별칭) | 
| U | `web-helper` |  **latest(버전 1.0.1의 별칭) | 

버전 1.0.2가 R에 게시되면 npm은 **latest 태그를 1.0.2로 업데이트합니다.


****  

| 리포지토리 | 패키지 이름 | 패키지 태그 | 
| --- | --- | --- | 
| R | `web-helper` |  **latest(버전 1.0.2의 별칭) | 
| U | `web-helper` |  **latest(버전 1.0.1의 별칭) | 

하지만 U의 **latest 값이 1.0.1이기 때문에 npm 클라이언트는 이 태그 값을 볼 수 없습니다. 1.0.2를 게시한 직후 리포지토리 R을 대상으로 `npm install`을 실행하면 방금 게시된 버전 대신 1.0.1이 설치됩니다. 가장 최근에 게시된 버전을 설치하려면 다음과 같이 정확한 패키지 버전을 지정해야 합니다.

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