자바스크립트 생태계에서는 npm 을 통해서 패키지(라이브러리)를 배포가 된다.
배포된 패키지는 보통 아래와 같은 스펙으로 설치를 할 수 있게 된다.
npm install package-name@version
설치할때 패키지명 뒤쪽에 @version
으로 붙는곳에 설치할 버전을 지정할 수 있고, version
이외에도 제공이 되는게 바로 tag
이다.
이 tag
를 이용해서 패키지 배포자는 stable
, beta
, canary
, nightly
, next
, dev
같이 목적에 맞는 버전을 설치할 수 있도록 특정 tag
를 설정할 수 있다.
tag
에는 기본적으로 latest
태그가 설정돼있고, 이는 패키지의 최신 버전을 가리키게 된다.
기본 패키지를 설치할때 npm install package-name
명령어는 npm install library-name@latest
와 같이latest
를 설치하도록 동작한다.
이 latest
태그는 버전에 의존하지 않고, 그저 배포 순서에 따라서 자동으로 설정이 된다(...)
만약 패키지의 여러 메이저 버전을 관리하고 있고, v2를 배포한 뒤 v1을 배포 했다면 latest
태그가 v1으로 설정되고, 패키지를 설치하는 사람들은 v2가 아닌 v1 을 설치하게 된다.
이 경우에는 실제 최신 버전으로 latest
태그를 직접 변경해주어야 한다.
이 tag
를 변경하기 위해서는 npm cli v9 을 기준으로 npm dist-tag
명령어를 사용하면 된다. (npm tag
명령어는 deprecated 되었다.)
npm dist-tag ls package-name
명령어로 패키지에 설정된tag
목록을 확인할 수 있다.$ npm dist-tag ls package-name latest: 1.0.0
npm dist-tag add package-name@2.0.0 latest
명령어로 패키지의tag
를 변경할 수 있다.$ npm dist-tag add package-name@2.0.0 latest +latest: 2.0.0 $ npm dist-tag ls package-name latest: 2.0.0
tag
의 삭제는npm dist-tag rm package-name tag-name
명령어로 할 수 있다.
관련 이슈: https://github.com/npm/npm/issues/6778
npm-dist-tag: https://docs.npmjs.com/cli/v9/commands/npm-dist-tag