본문으로 건너뛰기
🛠️ToolsShed

Semver 계산기

시맨틱 버전을 비교하고 버전이 범위를 만족하는지 확인합니다(^, ~, >= 등).

두 버전 비교

범위 예시

^1.2.3>= 1.2.3 < 2.0.0
~1.2.3>= 1.2.3 < 1.3.0
>=1.0.0 <2.0.0>= 1.0.0 AND < 2.0.0
1.0.0 - 2.0.0>= 1.0.0 <= 2.0.0
1.x.x || 2.x.x1.x OR 2.x

이 도구 소개

의미론적 버전 관리(SemVer)는 MAJOR.MINOR.PATCH 같은 버전 번호를 통해 소프트웨어 변경을 표준화된 방식으로 전달하는 시스템입니다. 이 도구는 버전을 빠르게 비교하고 특정 버전이 범위 제약 조건을 만족하는지 확인하는 데 도움이 됩니다. 프로젝트, 라이브러리, 프레임워크 전반에서 종속성을 관리할 때 필수적입니다.

사용하려면 첫 번째 섹션에 버전 번호(예: 1.5.0)와 범위 표현식(예: ^1.0.0 또는 >=1.0.0 <2.0.0)을 입력하여 버전이 일치하는지 확인합니다. 두 번째 섹션에서는 두 버전을 직접 비교하여 순서를 결정할 수 있습니다. 내장된 예제는 일반적인 범위 연산자를 보여줍니다. 캐럿(^)은 MINOR와 PATCH 업데이트를 허용하고, 틸드(~)는 PATCH 업데이트로만 제한하며, 하이픈 범위(1.0.0 - 2.0.0)는 두 버전 사이의 모든 버전을 포함합니다.

개발자와 패키지 관리자는 호환성을 보장하고 호환성 파괴 변경을 방지하기 위해 매일 이러한 버전 확인에 의존합니다. 이 계산기는 코드 검토, 종속성 업그레이드, 버전 제약 조건을 검증해야 하는 CI/CD 파이프라인에서 시간을 절약할 수 있습니다.

자주 묻는 질문

코드 구현

# pip install packaging
from packaging.version import Version
from packaging.specifiers import SpecifierSet

v1 = Version("1.2.3")
v2 = Version("2.0.0")
v3 = Version("1.2.3-alpha.1")  # Note: packaging uses PEP 440 syntax

# Comparison
print(v1 < v2)    # True
print(v1 == Version("1.2.3"))  # True

# Check if a version satisfies a specifier
spec = SpecifierSet(">=1.0.0,<2.0.0")
print(Version("1.5.0") in spec)   # True
print(Version("2.0.0") in spec)   # False
print(Version("0.9.0") in spec)   # False

# PEP 440 pre-release (different from semver!)
v_pre = Version("1.0.0a1")    # alpha 1
v_rc  = Version("1.0.0rc2")   # release candidate 2
print(v_pre < v_rc < Version("1.0.0"))  # True

# Sorting versions
versions = [Version(v) for v in ["2.0.0", "1.0.0", "1.5.0", "1.5.1"]]
print(sorted(versions))
# [<Version('1.0.0')>, <Version('1.5.0')>, <Version('1.5.1')>, <Version('2.0.0')>]

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.