홈 › 개발·웹 도구

Semver 버전 범위 확인

^1.2.3은 ‘1.x 안에서 1.2.3 이상’, ~1.2.3은 ‘1.2.x 안에서 1.2.3 이상’이에요. 0.x 버전에서는 ^도 훨씬 좁아지니 아래에서 직접 확인해 보세요.

입력한 내용은 서버로 보내지 않고 이 기기에서만 처리돼요
뜻
결과

버전 번호 세 자리의 약속

시맨틱 버저닝(SemVer)은 버전을 주.부.수(MAJOR.MINOR.PATCH) 세 숫자로 쓰는 약속이에요. 호환이 깨지는 변경이면 MAJOR, 기능을 더했지만 호환되면 MINOR, 버그만 고쳤으면 PATCH를 올려요. 1.0.0-beta.2처럼 하이픈 뒤에 붙는 것은 정식 출시 전의 프리릴리스(pre-release)이고, + 뒤의 빌드 정보는 순서 비교에 쓰지 않아요. npm·yarn·pnpm, Cargo, Composer 등 많은 패키지 관리자가 이 규칙으로 ‘어느 버전까지 받아도 되는지’ 정해요.

범위 기호

프리릴리스는 따로 취급해요

범위 안에 들어가는 숫자여도 1.3.0-beta.1 같은 프리릴리스는 기본적으로 고르지 않아요. 범위의 비교식에 같은 MAJOR.MINOR.PATCH의 프리릴리스가 적혀 있을 때만 허용돼요(예: ^1.2.3-beta.2는 1.2.3-beta.3은 허용하지만 1.2.4-alpha는 아님). 뜻 아래 줄에 보이는 <2.0.0-0은 2.0.0의 프리릴리스까지 막기 위한 표기예요. ‘프리릴리스도 포함’을 켜면 npm의 --include-prerelease처럼 계산해요.

정렬은 SemVer 2.0.0 규칙(숫자 식별자는 숫자로, 글자 식별자는 사전 순, 숫자가 글자보다 앞)을 따라서 beta.2가 beta.11보다 앞이에요. ‘다음 버전’ 표는 npm version 명령의 결과와 같아요. 범위 계산·정렬·다음 버전은 npm이 쓰는 semver 라이브러리(7.6)와 수백 개 사례로 결과를 맞춰 확인했어요.

참고한 자료

자주 묻는 질문

package.json에 ^를 쓸까요, ~를 쓸까요?

^는 새 기능이 담긴 MINOR 업데이트까지, ~는 버그 수정(PATCH)만 받아요. 라이브러리가 SemVer를 잘 지킨다면 ^가 기본이고, 조심스러우면 ~나 정확한 버전을 쓰고 lock 파일로 고정하세요.

1.10.0이 1.9.0보다 높은가요?

네. 버전은 글자가 아니라 숫자로 비교해서 10이 9보다 커요. ‘정렬·비교’ 탭에서 확인할 수 있어요.

v1.2.3처럼 앞에 v가 있어도 되나요?

돼요. 앞의 v와 =는 무시해요. 다만 01.2.3처럼 앞에 0을 붙인 숫자는 SemVer에서 틀린 형식이에요.

함께 쓰면 좋은 도구