— — — 시맨틱 버전을 파싱·비교·범위 검사합니다. ^, ~, >=, <, x 범위, || 지원.
원격 URL은 가져오지 않습니다. JSON을 직접 붙여넣으세요.
— — — — — 시맨틱 버전(SemVer)은 대부분의 라이브러리가 릴리스에 담긴 변경의 종류를 알리는 데 쓰는 major.minor.patch 관례입니다. 버그 수정은 patch를, 하위 호환되는 추가는 minor를, 호환성을 깨는 변경은 major를 올립니다. 사전 릴리스 태그(1.0.0-beta.1)나 빌드 메타데이터(+exp.sha.1)를 더하면 semver.org 2.0.0에 정의된 전체 문법이 됩니다.
문제는 “두 버전을 비교”와 “이 버전이 내 의존성 범위를 만족하는가”를 눈으로 짚어내기 쉽게 틀린다는 것입니다. 1.0.0이 1.0.0-beta보다 높은가 낮은가? (높습니다 — 릴리스는 항상 사전 릴리스를 앞섭니다.) 1.2.3은 ^1.2.0을 만족하나요? (네.) ~1.2.0은요? (그것도 네, 하지만 더 타이트한 이유로.) 이 페이지는 사양이 정의하는 대로 버전을 파싱하고, 구성요소를 보여 주고, 선후위로 두 버전을 비교하며, package.json이 쓰는 것과 같은 ^ / ~ / >= / || / 하이픈 문법으로 범위 질의에 답합니다 — 전부 로컬에서, 추측이 아니라 실제 규칙에 대해.
v 또는 =은 받아들여 벗겨내며, 1.2.3-beta.1+build.42는 부분까지 파싱됩니다.^1.2.0 || >=2.0.0 <3.0.0 — 실제 의존성 범위가 쓰이는 방식인, OR로 묶인 두 집합. 지원 문법: ^(캐럿), ~(틸드), >= <= > < =, x / X / * 와일드카드, 부분 버전(1.2), - 하이픈 범위, 그리고 집합을 OR하는 ||.clean 형태와 분해된 주, 부, 수정, 사전 릴리스, 빌드 필드를 보여 줍니다. 유효하지 않은 버전은 메시지와 함께 카드가 빨개집니다.A < B, A = B, 또는 A > B를 펼치고, 더해 diff — 변경된 가장 높은 구성요소(주, 부, 수정, 사전 릴리스, 또는 빌드)를 보여 줍니다.major.minor.patch를 걷고 이어 사전 릴리스 식별자를 걷습니다. 사전 릴리스가 없는 버전이 있는 것을 항상 앞서는 규칙과 함께. 숫자 식별자는 숫자로 비교(beta.2 < beta.11), 영숫자는 어휘적으로 비교, 숫자는 항상 영숫자 아래. 빌드 메타데이터는 파싱되어 표시되지만 선후위에 영향을 주지 않습니다.^1.2.3은 >=1.2.3 <2.0.0; ^0.2.3은 >=0.2.3 <0.3.0; ^0.0.3은 >=0.0.3 <0.0.4 — 캐럿의 “왼쪽 가장 큰 0이 아닌” 규칙. 틸드는 같은 부에 고정: ~1.2.3은 >=1.2.3 <1.3.0.||, 하이픈, 와일드카드가 있는 범위. ^1.0.0 || >=2.0.0 <3.0.0(두 집합의 OR), 1.2.0 - 1.5.0(포함 하이픈 범위), 1.x / 1.2.*(와일드카드 범위)가 모두 파싱·테스트됩니다.major.minor.patch에 사전 릴리스 태그를 실을 때만 범위를 만족할 수 있습니다. 그래서 1.5.0-rc.1은 ^1.2.0을 만족하지 않지만 ^1.5.0-rc.0은 만족합니다. 실제 패키지 매니저가 무작위 사전 릴리스를 릴리스 빌드에서 빼내는 방식과 일치.1.2.3에서 2.0.0으로의 도약은 주를 보여주고, 1.0.0에서 빌드가 바뀐 1.0.0은 선후위가 바뀌지 않았어도 빌드를 보여 줍니다.v, 선행 =, 주변 공백이 허용되어 git 태그나 변경로그에서 복사한 버전이 수동 정리 없이 파싱됩니다.기본값 — A 1.2.3, B 2.0.0, 범위 ^1.2.0 || >=2.0.0 <3.0.0 — 에서 페이지는 다음을 보고합니다.
A clean 1.2.3 (major 1, minor 2, patch 3)
B clean 2.0.0 (major 2, minor 0, patch 0)
compare 1.2.3 < 2.0.0
diff major
range A satisfies B satisfies
두 버전 모두 범위를 만족하지만, 다른 이유로: A는 첫 번째 OR 집합(^1.2.0 → >=1.2.0 <2.0.0)에, B는 두 번째(>=2.0.0 <3.0.0)에 들어갑니다. B를 3.0.0으로 바꾸면 배지가 만족하지 않음으로 뒤집힙니다 — 상한 <3.0.0이 그것을 배제하기 때문입니다.
사전 릴리스 규칙을 보려면 A를 1.5.0-rc.1, B를 1.5.0으로 설정하고 범위를 ^1.5.0-rc.0으로 유지합니다. 이제 A는 만족(같은 1.5.0, 범위가 일치하는 사전 릴리스 태그를 실음)하지만, 평범한 ^1.5.0은 1.5.0-rc.1을 통과시키지 않을 것입니다 — 그 게이트가 정확히 옵트인하기 전까지 릴리스 후보를 릴리스 의존성 해석에서 빼두기 위해 존재합니다.
1.0.0이 1.0.0-beta보다 높나요?#네. 사전 릴리스 태그가 없는 버전은 같은 major.minor.patch에서 사전 릴리스 태그가 있는 것보다 항상 선후위가 높습니다. 그래서 1.0.0 > 1.0.0-rc.1 > 1.0.0-beta.11 > 1.0.0-alpha. 릴리스가 “골드”가 되는 것이 레이블 변경이 아니라 실제 선후위 상승인 이유입니다.
^와 ~의 차이는?#캐럿은 가장 왼쪽의 0이 아닌 구성요소를 수정하지 않는 업데이트를 허용합니다. ^1.2.3은 1.2.3에서 2.0.0(미포함)까지의 어떤 1.x.x를 허용합니다. 틸드는 더 엄격합니다. 전체 버전이 주어지면 부를 고정합니다. ~1.2.3은 1.2.x만 허용합니다. 주(~1)만 주어지면 틸드와 캐럿 모두 전체 주 범위를 허용합니다. 대부분의 라이브러리는 ^로 고정하고, 직접 게시한 패키지의 패치는 종종 ~를 씁니다.
^1.0.0을 만족하지 않나요?#설계된 동작입니다. 1.5.0-rc.1 같은 사전 릴리스는 같은 AND 집합의 어떤 비교자가 같은 1.5.0에 사전 릴리스 태그를 실 때만 범위를 만족합니다. ^1.0.0은 1.5.0에 사전 릴리스 없이 >=1.0.0 <2.0.0-0으로 디슈거되어, 게이트가 릴리스 빌드가 누군가의 무작위 릴리스 후보를 끌어오지 않게 합니다. 옵트인하려면 ^1.5.0-rc.0이라고 명시하세요.
아닙니다. 1.0.0+exp.sha.5와 1.0.0+exp.sha.6은 선후위가 같습니다 — 빌드 메타데이터는 식별 전용입니다. 파서는 여전히 그것을 보여 주고(diff는 메타데이터만 다를 때 빌드 변경을 보고), 결코 순서를 결정하지 않습니다.
고유 방문자 (이 기기/브라우저는 한 번만 집계됨)
이 사이트는 Google AdSense를 통해 광고를 표시합니다. 광고 측정 및 개인화를 위해 쿠키를 사용합니다. 개인화된 광고 허용 여부를 선택하세요.