기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
npm 태그 처리
npm 레지스트리는 패키지 버전의 문자열 별칭인 태그를 지원합니다. 태그를 사용하여 버전 번호 대신 별칭을 제공할 수 있습니다. 예를 들어, 여러 개발 스트림이 있는 프로젝트에서 각 스트림마다 다른 태그(예: stable
, beta
, dev
, canary
)를 사용할 수 있습니다. 자세한 내용은 npm 웹 사이트에서 dist-tag
기본적으로 npm은 latest
태그를 사용하여 패키지의 현재 버전을 식별합니다. npm install
(pkg
@
또는 version
@
지정자가 없는)는 최신 태그를 설치합니다. 일반적으로 프로젝트는 안정적인 릴리스 버전에만 최신 태그를 사용합니다. 그 밖의 태그는 불안정한 버전이나 프리릴리스 버전에 사용됩니다.tag
npm 클라이언트로 태그를 편집
CodeArtifact 리포지토리에서는 세 개의 npm dist-tag
명령(add
, rm
및 ls
)이 기본 npm 레지스트리
npm 태그와 CopyPackageVersions API
CopyPackageVersions
API를 사용하여 npm 패키지 버전을 복사하면 해당 버전의 별칭을 지정하는 모든 태그가 대상 리포지토리에 복사됩니다. 대상에 있는 태그가 복사 중인 버전에도 있을 때 복사 작업은 대상 리포지토리의 태그 값을 소스 리포지토리의 값과 일치하도록 설정합니다.
예를 들어, 다음 표에 나와 있는 것처럼 리포지토리 S와 리포지토리 D에 모두 최신 태그가 설정된 단일 버전의 web-helper
패키지가 포함되어 있다고 가정해 보겠습니다.
리포지토리 | 패키지 이름 | 패키지 태그 |
---|---|---|
S |
|
latest(버전 1.0.1의 별칭) |
D |
|
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에 관한 자세한 내용은 리포지토리 간 패키지 복사를 참조합니다.
npm 태그와 업스트림 리포지토리
npm이 패키지에 대한 태그를 요청하고 해당 패키지의 버전이 업스트림 리포지토리에도 있을 때 CodeArtifact는 태그를 병합한 후 클라이언트에 반환합니다. 예를 들면, R이라는 리포지토리에 U라는 업스트림 리포지토리가 있습니다. 다음 표에는 두 리포지토리에 모두 존재하는 web-helper
라는 패키지의 태그가 나와 있습니다.
리포지토리 | 패키지 이름 | 패키지 태그 |
---|---|---|
R |
|
latest(버전 1.0.0의 별칭) |
U |
|
alpha(버전 1.0.1의 별칭) |
이 경우, npm 클라이언트가 리포지토리 R에서 web-helper
패키지의 태그를 가져오면 latest 태그와 alpha 태그를 모두 받습니다. 태그가 가리키는 버전은 변경되지 않습니다.
업스트림 리포지토리와 다운스트림 리포지토리의 동일한 패키지에 동일한 태그가 있는 경우, CodeArtifact는 업스트림 리포지토리에 있는 태그를 사용합니다. 예를 들어, webhelper의 태그가 다음과 같이 수정되었다고 가정해 보겠습니다.
리포지토리 | 패키지 이름 | 패키지 태그 |
---|---|---|
R |
|
latest(버전 1.0.0의 별칭) |
U |
|
latest(버전 1.0.1의 별칭) |
이 경우, npm 클라이언트가 리포지토리 R에서 패키지 web-helper의 태그를 가져오면 latest 태그는 버전 1.0.1에 별칭을 지정합니다. 이는 업스트림 리포지토리에 있기 때문입니다. 이렇게 하면 npm
update
를 실행하여 다운스트림 리포지토리에 아직 없는 업스트림 리포지토리의 새 패키지 버전을 쉽게 사용할 수 있습니다.
다운스트림 리포지토리에 패키지의 새 버전을 게시할 때 업스트림 리포지토리의 태그를 사용하면 문제가 될 수 있습니다. 예를 들어, 패키지 web-helper의 latest 태그가 R과 U에서 모두 동일하다고 가정해 보겠습니다.
리포지토리 | 패키지 이름 | 패키지 태그 |
---|---|---|
R |
|
latest(버전 1.0.1의 별칭) |
U |
|
latest(버전 1.0.1의 별칭) |
버전 1.0.2가 R에 게시되면 npm은 latest 태그를 1.0.2로 업데이트합니다.
리포지토리 | 패키지 이름 | 패키지 태그 |
---|---|---|
R |
|
latest(버전 1.0.2의 별칭) |
U |
|
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