[NPM] package.json verison 지정 시 틸드tilde(~), 캐럿caret(^)

미랭군·2024년 10월 25일

Semantic Versioning

1.2.3와 같은 버전은 MAJOR.MINOR.PATH 의 형태로 구성되고, 이는 Semantic Versioning 간단하게 줄여서 semver이라고 부른다.

MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards compatible manner, and
PATCH version when you make backwards compatible bug fixes.
MAJOR는 하위호환이 되지 않는 API변화들
MINOR는 하위호환이 되는 범위내에서 기능 추가들
PATCH는 하위호환이 되는 범위내에서 bug fix 🐞
특정 버전보다 높거나 낮은 경우 크다, 작다, 크거나 같다, 작거나 같다로 표기한다.

>1.2.3
>=1.2.3
<1.2.3
<=1.2.3

틸드, 캐럿

본론으로 돌아와서, 틸드(~), 캐럿(^)에 대해서 살펴보자.

  • 틸드(~): x.y.z 중 z 범위 내에서 버전 업데이트
  • 캐럿(^): x.y.z 중 x 이하 하위호환성이 보장되는 범위 내에서 버전 업데이트

텍스트~1.2.3: >=1.2.3 <1.3.0
틸드이고, 위의 정의에 따라서 z범위내에서 버젼 업데이트 한다.
그러면 범위가 1.2.3을 포함해서 같거나 크고, 1.3.0보다 작은 범위내에서 업데이트 한다.
^1.2.3: >=1.2.3 <2.0.0
캐럿은, 위의 정의에 따라 x이하 하위 호환성이 보장되는 범위내에서 버전 업데이트 한다.
1.2.3보다 크거나 같고, 2.0.0보다 작은 범위내에서 업데이트 한다.
결국 Major버전이 바뀌지 않고, 하위호환성을 유지하기 때문에 실무에서 가장 많이 사용한다!

profile
개발자

0개의 댓글