Semantic Versioning?

Seokkitdo·2022년 5월 6일
0

TIL

목록 보기
1/1
post-thumbnail

시맨틱 버저닝은 개발하는 소프트웨어의 규모가 커지고, 외부 라이브러리를 많이 사용할수록 생기는 의존성 지옥을 해결하고자 생긴 공통의 버전 명시 규칙과 요구사항을 뜻합니다.

"react": "^17.0.2",

일반적으로 라이브러리를 설치하게 될 경우, 위와 같은 형태를 띄고 있습니다.
하나씩 살펴보도록 하겠습니다.

Versions MAJOR.MINOR.PATCH

MAJOR : API 호환성이 깨질만한 변경사항
MINOR : 하위 호환성을 지키면서 API 기능이 추가된 것
PATCH : 하위 호환성을 지키는 범위 내에서 버그가 수정된 것

Semantic Versioning Specification

  • 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)는 은 초기 개발을 위해서 사용합니다.

Advanced Range Syntax

- 사용하는 Hyphen Ranges X.Y.Z - A.B.C
x 를 사용하는 X-Ranges 1.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

Hyphen Ranges X.Y.Z ~ X1.X2.X3

  • 1.1.1 - 2.1.1 사이값을 의미
  • 1.2 - 2.3.4 첫 번째 버전에 생략이 있으면 0을 포함하여 사이값
  • 1.2.3 - 2.3 두 번째 버전에 생략이 있다면 major, minor만 일치하는 경우만 포함하는 사이값
  • 1.1.1 -2 :>= 1.1.1 < 3 major가 일치하는 경우만 포함

X-Ranges 1.0.x

  • *:> 0.0.0 모든 버전을 충족
  • 1.x :> 1.0.0 < 2.0.0 major와 minor level의 업데이트 허용
  • 1.1.x :>= 1.1.0 < 1.2.0 patch level의 업데이트 허용

Tilde Ranges ~1.0.0

  • ~1.1.1 :>= 1.1.1 <1.2.9 patch level 변경 허용
  • ~1.1 :>= 1.1.1 < 1.2.0 patch level 변경 허용
  • ~1 :> 1.0.0 < 2.0.0 minor level 변경 허용
  • ~1.1.1-alpha.1 :>= 1.1.1-alpha.1 < 1.2.0 patch level 변경 허용하고 1.2.0-alpha.2.는 불포함

Caret Ranges ^1.0.0

  • ^1.1.1 :>= 1.1.1 < 2.0.0 왼쪽에서 가장 처음 0이 아닌건 major 이기에 minor와 patch업데이트 허용
  • ^0.1.1 :>= 0.1.1 < 0.3.0 왼쪽에서 가장 처음 0이 아닌건 minor 이기에 patch 업데이트 허용
  • ^0.0.1 :>= 0.0.1 왼쪽에서 가장 처음 0이 아닌건 patch 이기에 업데이트 거부
  • ^1.1.1.beta.1 :>= 2.0.0 왼쪽에서 가장 처음 0이 아닌건 major 이기에 minor, patch 업데이트 허용
profile
어제보다 성장해 나가고 싶은 개발자

0개의 댓글