npm은 semver라는 Versioning 규칙을 따른다. 따라서 package.json에서 의존성 패키지의 버전을 기입할 때나 새로운 버전의 패키지를 출시할 때의 버전은 semver 규칙을 따라야 한다. semver는 패키지의 버전으로 하위 호환성을 보장하는 지를 알려주기 때문에 패키지 의존성 관리에 도움을 준다.
Semantic Versioning은 MAJOR, MINOR, PATCH 버전으로 이루어져 있고 버전 표기는 MAJOR
.MINOR
.PATCH
와 같이 작성한다. 각 버전에 대한 설명은 아래와 같다.
공통적으로 'dot separated identifiers[0-9A-Za-z-]'를 사용한다.
pre-release version : '-'로 연결
ex. 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92
build metadata 표기 : '+'로 연결
ex. 1.0.0-alpha+001, 1.0.0+20130313144700
MINOR 버전이 명시된 경우 PATCH 변경만 허용하고, MINOR 버전이 명시되지 않으면 MINOR 변경까지도 허용한다.
하위 호환성이 보장되는 업데이트를 진행한다.
^1.2.3 : >= 1.2.3 < 2.0.0
^1.2 : >= 1.2.0 < 2.0.0
^1 : >= 1.0.0 < 2.0.0
^0.1.2 : >= 0.1.2 < 0.2.0 (예외: 버전이 1.0.0 미만인 경우 API 변경이 수시로 일어날 수 있으므로 Tilde처럼 동작한다.)
그 외
latest : 항상 최신 버전을 적용하는 것이다.
임의의 숫자를 위해 x, X, * 사용할 수 있다.
부등호, 등호를 사용 가능하다.
[TOAST UI] 의존성 관리 - 바로가기
SemVer(Semantic Versioning) - 라이브러리 버전 관리 이야기 - 바로가기