도구스개발

semver 범위 판정기

package.json의 ^1.2.3 같은 버전 범위가 실제로 어디까지인지 펼쳐 보여주고, 특정 버전이 그 범위에 드는지 판정합니다. 0.x에서 캐럿이 좁아지는 규칙과 프리릴리스 처리까지 다룹니다.

package.json의 dependencies에 적는 그 문자열입니다.

>=1.2.3 <2.0.0 — 메이저를 고정합니다. 가장 흔한 표기입니다.

이 버전이 위 범위에 드는지 봅니다.

1.5.0 은 ^1.2.3 에

듭니다

펼치면 >=1.2.3 <2.0.0

펼친 범위>=1.2.3 <2.0.0

표기별로 어디까지인가

표기펼치면1.5.0
^1.2.3>=1.2.3 <2.0.0
~1.2.3>=1.2.3 <1.3.0아님
^0.2.3>=0.2.3 <0.3.0아님
^0.0.3>=0.0.3 <0.0.4아님
1.2.x>=1.2.0 <1.3.0아님
>=1.2.3 <2.0.0>=1.2.3 <2.0.0
1.2.3 - 2.3.4>=1.2.3 <=2.3.4
^1 || ^2>=1.0.0 <2.0.0 || >=2.0.0 <3.0.0
**
0.x에서는 캐럿이 좁아집니다.
캐럿은 “맨 왼쪽의 0 아닌 자리를 고정한다”는 규칙이라, ^1.2.3<2.0.0이지만 ^0.2.3<0.3.0이고 ^0.0.3은 그 버전 하나뿐입니다. 1.0.0 전에는 마이너 올림도 깨는 변경일 수 있다고 보기 때문입니다. ^0.2.3 ~0.2.3이 같아지는 것도 이 때문입니다.
빈칸은 그리고, || 는 또는입니다.
>=1.2.3 <2.0.0은 둘 다 만족해야 하고, ^1 || ^2는 둘 중 하나만 만족하면 됩니다. 캐럿· 물결표·부분 지정·하이픈은 모두 >= < 짝으로 펼쳐지므로, 위 “펼친 범위”를 보면 실제로 무엇을 뜻하는지 알 수 있습니다.
판정 결과는 npm의 semver 패키지와 756가지 사례에서 모두 일치하는 것을 확인했습니다 — 범위 28가지 × 버전 27가지를 대조했습니다. 다만 이 계산기는 널리 쓰이는 표기만 다루며, 1.2.3+build 같은 빌드 메타데이터는 선행순위에 영향을 주지 않으므로 무시합니다.

사용 방법

  1. 1package.json에 적힌 범위 문자열을 넣습니다.
  2. 2확인할 버전을 넣으면 그 범위에 드는지 바로 나옵니다.
  3. 3"펼친 범위" 에서 그 표기가 실제로 무엇을 뜻하는지 확인합니다.
  4. 4아래 표에서 다른 표기를 썼다면 결과가 어떻게 달라지는지 봅니다.

자주 묻는 질문

>=1.2.3 <2.0.0입니다. 메이저 버전을 고정하고 그 안에서는 마이너·패치를 자유롭게 올립니다. semver 규칙상 메이저가 같으면 호환된다고 보기 때문입니다.

캐럿(^)은 메이저까지, 물결표(~)는 마이너까지 고정합니다. ^1.2.3은 <2.0.0이고 ~1.2.3은 <1.3.0입니다. 물결표가 더 보수적이며, 패치만 받고 싶을 때 씁니다.

캐럿은 "맨 왼쪽의 0 아닌 자리를 고정한다"는 규칙이기 때문입니다. 0.2.3에서 맨 왼쪽의 0 아닌 자리는 마이너(2)이므로 <0.3.0이 됩니다. 1.0.0 전에는 마이너 올림도 깨는 변경일 수 있다고 보는 것입니다. ^0.0.3은 더 좁아져 그 버전 하나뿐입니다.

범위에 프리릴리스가 적혀 있지 않으면 프리릴리스 버전은 절대 맞지 않기 때문입니다. 숫자만 보면 범위 안이지만, 아직 다듬는 중인 버전이 자동으로 딸려 오는 사고를 막으려는 규칙입니다. 받으려면 범위에 같은 [메이저, 마이너, 패치]의 프리릴리스를 적어야 합니다.

빈칸은 그리고(AND), || 는 또는(OR)입니다. ">=1.2.3 <2.0.0" 은 둘 다 만족해야 하고, "^1 || ^2" 는 둘 중 하나만 만족하면 됩니다. 캐럿·물결표·부분 지정·하이픈은 모두 >= 와 < 짝으로 펼쳐집니다.

npm의 semver 패키지와 756가지 사례에서 모두 일치하는 것을 확인했습니다. 범위 28가지 × 버전 27가지를 대조했으며, 프리릴리스와 0.x 캐럿 같은 까다로운 경우도 포함했습니다.

알아두면 좋은 점

  • 널리 쓰이는 표기만 다룹니다. 캐럿·물결표·부분 지정(x·*)·하이픈·비교 연산자·||를 지원합니다.
  • 빌드 메타데이터(1.2.3+build)는 선행순위에 영향을 주지 않으므로 무시합니다.
  • npm의 semver 패키지와 756가지 사례에서 대조해 모두 일치하는 것을 확인했습니다.
  • Git URL, 파일 경로, 태그 이름 같은 semver가 아닌 의존성 표기는 다루지 않습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 8월 30일 · 결과는 참고용 추정치입니다.