VICTOR LOG

About

Post

Semantic Versioning

2022-08-01

Development
Semantic Versioning 히어로 이미지

Semantic Versioning이란?

Semantic versioning(이하 SemVer)은 패키지의 버전을 관리하기 위한 규칙이다.

형식

SemVer은 세 가지 숫자로 버전을 표기한다. 각 숫자는 .(온점)으로 구분된다.


X.Y.Z

각각 major version, minor version, patch version을 의미한다.


위와 같은 형식이고, X, Y, Z는 각각 음이 아닌 정수다.


각 버전이 증가하면 하위 버전은 0으로 변화시킨다.

예를들어 major version이 증가하면 minor version과 patch version을 0으로 바꾼다.


Major version

X에 위치한 숫자를 major version이라고 한다.

major version은 이전 버전과 호환되지 않은 변경 또는 기능이 추가됐을 때 증가시킨다.


Minor version

Y에 위치한 숫자를 minor version이라고 한다.

minor version은 이전 버전과 호환되는 변경 또는 기능이 추가됐을 때 증가시킨다.


Patch version

Z에 위치한 숫자를 patch version이라고 한다.

patch version은 이전 버전과 호환되는 버그를 해결했을 때 증가시킨다.


조금 더 자세한 SemVer 규칙은 여기서 확인 가능하다.


버전 범위

패키지의 버전은 특정 버전으로 명시할 수 있지만,

사용가능한 버전의 범위를 명시하면 더 유연하게 버전을 관리할 수 있다.


버전의 범위는 부등호를 통해서 표기할 수 있다.

예를들어, > = 1.2.3은 해당 패키지는 1.2.3 이상의 버전을 사용할 수 있음을 의미한다.


부등호 뿐만 아니라 ~(Tilde)와 ^(Caret)으로도 버전의 범위를 표현할 수 있다.


~를 이용한 버전 표기

~의 의미는 아래처럼 해석된다.

  • Minor 버전이 표기되어 있으면 Patch 버전만 증가 시킬 수 있다.

    ~1.2 = 1.2 이상 1.3.0 미만의 버전

    ~1.2.3 = 1.2.3 이상 1.3.0 미만의 버전

  • Minor 버전이 표기되어 있지 않으면 Minor 버전과 Patch 버전을 증가시킬 수 있다.

    ~1 = 1.0.0 이상 2.0.0 미만의 버전


^을 이용한 버전 표기

^을 사용하면 SemVer의 각 버전 중 왼쪽에 있는 첫 번째 0이 아닌 버전을 변경하지 않는 선에서 버전을 증가시킬 수 있다.


^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.0.3 버전과 0.0.4 버전 사이에는 0.0.3-alpha 등과 같은 테스트 버전이 포함되는 걸로 추측


버전의 범위를 표현하는 방법은 여기서 더 자세히 확인 가능하다.


참고 자료

About semantic versioning | npm Docs

유의적 버전 2.0.0

Semantic Versioning 소개

GitHub - npm/node-semver: The semver parser for node (the one npm uses)

Semantic Versioning이란?

형식

버전 범위

참고 자료

Victor

© Victor. All Rights Reserved.