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 아닌 자리를 고정한다”는 규칙이라,
^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는 둘 중 하나만 만족하면 됩니다. 캐럿· 물결표·부분 지정·하이픈은 모두 >=와 < 짝으로 펼쳐지므로, 위 “펼친 범위”를 보면 실제로 무엇을 뜻하는지 알 수 있습니다.1.2.3+build 같은 빌드 메타데이터는 선행순위에 영향을 주지 않으므로 무시합니다.사용 방법
- 1package.json에 적힌 범위 문자열을 넣습니다.
- 2확인할 버전을 넣으면 그 범위에 드는지 바로 나옵니다.
- 3"펼친 범위" 에서 그 표기가 실제로 무엇을 뜻하는지 확인합니다.
- 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일 · 결과는 참고용 추정치입니다.