Semver 범위 확인
Semver Range Tester
범위에 맞는 버전을 확인하고 두 버전을 비교하며 목록을 우선순위대로 정렬합니다.
시맨틱 버저닝에 대해 사람들이 실제로 궁금해하는 두 가지에 답합니다. 이 버전이 이 범위에 들어가는가, 그리고 이 목록 중에 npm이 무엇을 설치하는가입니다. 두 버전의 우선순위를 비교하고, `npm version`의 각 종류가 어떤 값을 만드는지도 보여 줍니다.
범위
해당 범위: 1.0.0 이상, 2.0.0 미만
npm의 범위 문법입니다. `^` `~` `x` `-` `||`와 비교 연산자를 씁니다. semver.org에는 이 문법이 없습니다. 거기서 정하는 것은 버전 형식과 순서뿐입니다.
버전 목록
한 줄에 하나씩, 또는 쉼표로 구분해서 씁니다.
어떤 것이 맞는지
- —1.0.0-alpha
- —1.0.0-alpha.1
- —1.0.0-alpha.beta
- —1.0.0-beta
- —1.0.0-beta.2
- —1.0.0-beta.11
- —1.0.0-rc.1
- 해당1.0.0
- 해당1.2.0설치될 버전
- —2.0.0-rc.1
- —2.0.0
- —2.1.3
둘을 비교
순서
1.0.0-beta.11이 더 높음
차이
prerelease
우선순위는 semver.org 11절을 그대로 따릅니다. 빌드 메타데이터도 포함해서 — 즉, 무시해서 — 비교합니다.
다음 버전
| major | 2.0.0 |
|---|---|
| minor | 1.3.0 |
| patch | 1.2.4 |
| premajor | 2.0.0-alpha.0 |
| preminor | 1.3.0-alpha.0 |
| prepatch | 1.2.4-alpha.0 |
| prerelease | 1.2.4-alpha.0 |
`npm version <종류>`가 만들어 낼 값입니다.
모두가 한 번은 놀라는 규칙이 있습니다. 프리릴리스는 범위 자체가 같은 major.minor.patch의 프리릴리스를 언급할 때만 그 범위에 들어갑니다. 그래서 ^1.0.0은 2.0.0-beta.1을 포함하지 않고, rc 태그가 실수로 설치되는 일이 없습니다.
사용 방법
범위를 씁니다
`^1.0.0`, `~1.2.3`, `>=1.2.7 <1.3.0`, `1.2.3 - 2.3.4`, `||`를 모두 씁니다. 그것이 무엇에 해당하는지 풀어 쓴 설명이 아래에 나옵니다.
가진 버전들을 붙여넣습니다
한 줄에 하나씩 또는 쉼표로 구분해서 넣습니다. `npm view <패키지> versions`의 출력을 그대로 붙여넣어도 됩니다. 각각 해당 여부가 표시되고, npm이 설치할 것에 라벨이 붙습니다.
둘을 비교하거나 다음 릴리스를 계획합니다
비교 칸은 semver.org 11절을 그대로 따릅니다. 올림 표는 주어진 시작 버전에서 `npm version major`, `preminor` 등이 무엇을 만드는지 보여 줍니다.
자주 묻는 질문
`^1.0.0`은 왜 `2.0.0-beta.1`에 안 맞나요?
이유가 두 개 겹쳐 있습니다. `^1`은 메이저 2에 닿지 않고, 그와 별개로 프리릴리스는 범위 자체가 같은 major.minor.patch의 프리릴리스를 언급할 때만 그 범위에 들어갑니다. 두 번째 규칙 덕분에 `rc` 태그가 실수로 설치되지 않습니다.
`^0.2.3`은 왜 다르게 동작하나요?
1.0.0 아래에서는 캐럿이 마이너까지 조여집니다. `^0.2.3`은 0.2.x는 허용하지만 0.3.0은 허용하지 않습니다. 0.x 프로젝트는 마이너마다 깨진다고 보기 때문입니다. semver.org가 아니라 npm의 규칙이고, 매번 사람들을 놀라게 합니다.
`1.0.0+build.1`과 `1.0.0`은 다른가요?
문자열은 다르지만 우선순위는 같습니다. 10절이 비교할 때 빌드 메타데이터를 무시한다고 정합니다. 그래서 빌드 메타데이터만 다른 버전들을 정렬하면 순서가 안정적이지 않고, 둘 사이에 순서를 매길 수도 없습니다.
범위 문법도 semver의 일부인가요?
아닙니다. semver.org는 버전 형식과 두 버전의 비교 방법까지만 정합니다. `^`, `~`, `x`, `||`는 npm의 범위 문법이고, 다른 생태계들은 그걸 빌려 쓰거나 다른 것을 씁니다. Cargo, Composer, pip이 세부에서 서로 다릅니다.
이 도구로 이어지는 것
OpenAPI 변경 비교
OpenAPI Diff
두 OpenAPI 문서를 비교해 호환성을 깨는 변경과 추가만 된 변경을 구분해 보여 줍니다.
오픈소스 라이선스 선택
Licence Chooser
주요 오픈소스 라이선스를 의무 사항과 호환성으로 비교하고 LICENSE 파일을 만들어 줍니다.
JSON 정렬·검사
JSON Formatter & Validator
JSON을 보기 좋게 정렬하거나 압축하고, 문법 오류가 난 줄과 열을 정확히 짚어 줍니다.
YAML 정렬·검사
YAML Formatter & Validator
YAML 들여쓰기를 통일하고 문법을 검사하며, 파서를 깨뜨리는 탭·앵커 실수를 표시합니다.
다음 단계
이 도구의 결과를 그대로 받을 수 있는 도구들입니다.
JSON 정렬·검사
JSON Formatter & Validator
JSON을 보기 좋게 정렬하거나 압축하고, 문법 오류가 난 줄과 열을 정확히 짚어 줍니다.
오픈소스 라이선스 선택
Licence Chooser
주요 오픈소스 라이선스를 의무 사항과 호환성으로 비교하고 LICENSE 파일을 만들어 줍니다.
OpenAPI 변경 비교
OpenAPI Diff
두 OpenAPI 문서를 비교해 호환성을 깨는 변경과 추가만 된 변경을 구분해 보여 줍니다.
JSON CSV 변환
JSON ⇄ CSV
중첩 JSON을 점 표기 열 이름으로 펼치거나, 표에서 객체를 다시 만듭니다.
JSON 비교
JSON Diff
키 순서를 무시하고 두 JSON을 구조로 비교해 추가·삭제·변경된 경로를 알려 줍니다.
JSON 타입스크립트 변환
JSON to TypeScript
JSON 예시에서 타입스크립트 인터페이스를 추론하고 선택적 필드와 유니온을 합칩니다.