Node versioning(with ~, ^)

murkgom·2023년 3월 14일
0
post-custom-banner

0. semver(Semantic Versioner)

Node(package.json 등)에서 사용하는 Version 방식

Major, Minor, Patch 로 구성

  • Major : incompatible해질 때 up
  • Minor : compatible한 기능 추가시 up
  • Patch : compatible 내 버그 fix시 up

1. Tilde(~) Ranges

Patch, Minor 버전까지만 버전업을 허용하는 범위

rule

Min version
Tilde 뒤에 적힌 그대로(>=)

Max version
Minor 버전 존재 확인
- 존재 => (Minor 버전 +1) 직전까지(<)
- 부재 => (Major 버전 +1) 직전까지(<)

example

~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0
~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0
~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0
~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0
~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0
~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0

2. Carot(^) Ranges

Patch, Minor 버전까지만 버전업을 허용하는 범위

rule

Min version
Tilde 뒤에 적힌 그대로(>=)

Max version
(0이 아닌 첫 버전값 +1) 직전까지(<)
- Major, Minor, Patch 순
- 전부 0일 경우, 마지막 0이 대상

example

^1.2.3 := >=1.2.3 <(1+1).0.0 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.(3+1) := >=0.0.3 <0.0.4
^0.0 := >0.0.0 <0.(0+1).0 := >=0.0.0 <0.1.0

refs

post-custom-banner

0개의 댓글