Semantic Versioning (3) - 고급 범위(Advanced Range Syntax

goodjam92·2022년 7월 30일
0

Essential Knowledge

목록 보기
4/7

고급 범위 (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]

1. Hyphen Ranges X.Y.Z - A.B.C


  • 1.2.3 - 2.1.1
    '>=1.2.3 <= 2.3.4
    1.2.3 보다 커야하고, 2.3.4 보다 같거나 작아아 한다.

  • 1.2 - 2.3.3
    첫 번째 버전에 생략이 있다면 0을 포함한다.
    '>=1.2.0 <= 2.1.1

  • 1.2.3 - 2.3
    두 번째 버전에 생략이 있다면 major, minor 가 일치하는 경우만 포함한다.
    '>= 1.2.3 < 2.4

  • 1.2.3 - 2
    두 번째 버전에 생략이 있다면 2로 시작하는 major 가 일치하는 경우만 포함한다.
    '>= 1.2.3 < 3

2. X-Ranges


  • *
    '> 0.0.0 모든 버전에 충족한다.

  • 1.x
    major와 minor의 업데이트 허용 >= 1.0.0 < 2.0.0

  • 1.2.x
    patch의 업데이트 허용 >= 1.2.0 < 1.3.0

3. Tilde Ranges


Minor version이 지정되어 있다면 patch의 변경을 허용한다.
그렇지 않은 경우 minor 변경을 허용한다.

  • ~.1.2.3
    minor version이 지정 => patch 변경을 허용
    '>= 1.2.3 < 1.(2+1).0
    '>= 1.2.0 < 1.3.

  • ~1.2
    minor version 지정 => patch 변경 허용 (위와 같음)

  • ~1
    minor version 지정 안됨 => minor 변경 허용
    '>= 1.0.0 < 2.0.0

  • ~1.10.0-alpha.1
    minor version 지정 => patch 변경 허용
    이 때 1.10.0 과 일치하는 prerelease tag도 같이 포함
    '>= 1.10.0-alpha.1 < 1.11.0
    1.10.0-alpha.2 포함o 1.11.0-alpha.2 포함x

4. Caret Ranges


major, minor, patch에서 가장 왼쪽에 있는 0이 아닌 요소를 제외한 변경 허용
2.0.0 버전 = minor & patch 업데이트 허용
2.X 버전 = patch 업데이트 허용
2.X.X 버전 = 업데이트 허용하지 않음.

  • ^1.2.3
    major가 0이 아닌 요소이기에 minor & patch 업데이트 허용
    '>= 1.2.3 < 2.0.0

  • ^0.2.3
    minor가 0이 아닌 요소이기에 patch 업데이트 허용
    '>= 0.2.3 < 0.3.0

  • ^0.0.3
    patch가 0이 아닌 요소이기에 업데이트 허용 하지 않음

  • ^1.2.3-beta.2
    major가 0이 아닌 요소이기에 minor & patch 업데이트 허용
    또한 1.2.3 버전이 일치하는 경우 prerelease tag 포함.
    '>=1.2.3-beta.2 < 2.0.0

  • ^0.0.3-beta
    0.0.3의 prerelease만 허용

patch 값이 누락되어 있는 경우

0으로 표기하지만, major와 minor version 둘 다 0인 경우 해당 값 내에서 유연성이 허용

  • ^1.2.x
    major가 0이 아닌 요소이고, 0으로 채워진다.
    '>=1.2.0 < 2.0.0

  • ^0.0.x
    major와 minor가 0이기 때문에 해당 값 내에서 유연성 허용
    '>=0.0.0 < 0.1.0

  • ^0.0
    위와 내용 같음
    '>= 0.0.0 < 0.1.0

Semantic Versioning Calculator

https://semver.npmjs.com/

내용 참고한 링크 (감사합니다.)
https://velog.io/@slaslaya/Semantic-Versioning-2.0.0-MAJOR-MINOR-PATCH%EC%99%80-%EB%AA%85%EC%84%B8%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC

profile
습관을 들이도록 노력하자!

0개의 댓글