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
본론으로 돌아와서, 틸드(~), 캐럿(^)에 대해서 살펴보자.
텍스트~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버전이 바뀌지 않고, 하위호환성을 유지하기 때문에 실무에서 가장 많이 사용한다!