npm 패키지 버저닝을 사용하는 prefix로 틸드(Tilde, ~)와 캐럿(Caret, ^)가 있다. 각각의 차이를 알아보자.
먼저 버저닝은 아래와 같다. 버전 2.21.2
는 아래의 이미지로 설명할 수 있다.
앞자리 버전을 major, 중간 버전을 minor, 마지막 버전이 patch인데 각각은 아래와 같은 특징을 지닌다.
- patch : 버그 픽스 또는 이 정도 수준의 작업 버저닝
- minor : 새로운 기능을 추가하는 버저닝
- major : breaking change가 요구될만한 크리티컬한 변화를 담은 버저닝
Tilde (~)
reference : https://docs.npmjs.com/cli/v6/using-npm/semver#tilde-ranges-123-12-1
major, minor 버전을 제외한 patch 버전까지 버저닝하는 prefix이다.
예를들어, ~1.2.3
은 1.2.3
을 포함하고, 1.3 미만의 최신 버전까지를 버저닝한다. 만약 버저닝하는 대상 패키지의 최신 패키지 버전이 1.3.2
이고, 마이너 버전이 1.2.x
일때의 최신 버전이 1.2.11
이라면, 1.2.11
버전의 패키지로 업데이트하게 된다.
1 | ~0.0.5 : >= 0.0.5 < 0.1.0 -> 0.0.x : 최신 버전의 patch 버저닝 |
Caret (^)
reference : https://docs.npmjs.com/cli/v6/using-npm/semver#caret-ranges-123-025-004
major 버전을 제외한 minor/patch 버전까지 버저닝하는 prefix이다.
^1.2.3
으로 패키지 버저닝을 하면, 2.0.0
미만의 가장 최신 버전으로 버저닝한다. 대상 패키지의 최신 버전이 1.3.2
라면, 본 패키지는 1.3.2
로 업데이트된다.
1 | ^0.1.2 : >= 0.1.2 < 0.2.0 -> 0.1.x : 최신 버전의 patch 버저닝 |
major 버전이 0인 0.x.x
에서는 tilde와 똑같이 동작한다.
1 | ^0.0.1 : == 0.0.1 |