시맨틱 버저닝은 개발하는 소프트웨어의 규모가 커지고, 외부 라이브러리를 많이 사용할수록 생기는 의존성 지옥을 해결하고자 생긴 공통의 버전 명시 규칙과 요구사항을 뜻합니다.
"react": "^17.0.2",
일반적으로 라이브러리를 설치하게 될 경우, 위와 같은 형태를 띄고 있습니다.
하나씩 살펴보도록 하겠습니다.
MAJOR : API 호환성이 깨질만한 변경사항
MINOR : 하위 호환성을 지키면서 API 기능이 추가된 것
PATCH : 하위 호환성을 지키는 범위 내에서 버그가 수정된 것
- normal version은 X.Y.Z 형태이며 음수가 아닌 정수여야 하며 절대 앞되며 각 수는 증가하는 수여야 한다.
- MAJOR Version이 올라가면 MINOR Version과 PATCH Version은 0이 되야합니다.
- MINOR Version이 올라가면 PATCH Version이 0이 반드시 되어야 합니다.
- 정식배포전에 pre-release하는 경우에는 -또는 . 을 사용합니다.
- 정식배포전에 git commit후 난수가 붙는 경우 그대로 배포할 경우를 build metadata라고 합니다.
ex) 16.9.0-alpha.0- 만약 MAJOR에 0으로 시작하는 경우(0.y.z)는 은 초기 개발을 위해서 사용합니다.
- 사용하는 Hyphen Ranges
X.Y.Z - A.B.C
x 를 사용하는 X-Ranges1.2.x
1.X
1.2.*
~ 를 사용하는 Tilde Ranges~1.2.3
~1.2
~1
^를 사용하는 Caret Ranges^1.2.3
^0.2.5
^0.0.4
사이값을 의미
첫 번째 버전에 생략이 있으면 0을 포함하여 사이값
두 번째 버전에 생략이 있다면 major, minor만 일치하는 경우만 포함하는 사이값
major가 일치하는 경우만 포함
모든 버전을 충족
major와 minor level의 업데이트 허용
patch level의 업데이트 허용
patch level 변경 허용
patch level 변경 허용
minor level 변경 허용
patch level 변경 허용하고 1.2.0-alpha.2.는 불포함
왼쪽에서 가장 처음 0이 아닌건 major 이기에 minor와 patch업데이트 허용
왼쪽에서 가장 처음 0이 아닌건 minor 이기에 patch 업데이트 허용
왼쪽에서 가장 처음 0이 아닌건 patch 이기에 업데이트 거부
왼쪽에서 가장 처음 0이 아닌건 major 이기에 minor, patch 업데이트 허용