SemVer에 대해서 알아보기

버전을 표기하는 방법으로 npm에서 사용되는 것이 SamVer이다.

SemVer(Semantic Versioning)는 소프트웨어 버전을 의미적으로 명확하게 표현하기 위한 버전 관리 체계이다.

SemVer는 주 버전(Major), 부 버전(Minor), 패치 버전(Patch)으로 구성되며, 이러한 버전 구성 요소들을 조합하여 소프트웨어의 변경 사항과 호환성을 나타낸다.

1.2.3 (major: 1 minor: 2 patch: 3)

❄️ 주 버전(Major)대규모 변화나 호환되지 않는 변경 사항이 있을 때 증가한다. 

이는 기존 버전과의 하위 호환성을 깨뜨릴 수 있는 주요한 업데이트를 의미한다. 

 

☁️ 부 버전(Minor)은 기능적인 추가 또는 변경이 있을 때 증가한다. 

이러한 변경 사항은 하위 호환성을 유지하면서 새로운 기능을 제공할 수 있다.

 

☀️ 패치 버전(Patch)은 기존 버전에서 버그 수정 및 보안 패치와 같은 작은 변경 사항이 있을 때 증가한다.

이러한 변경 사항은 기존 버전과의 완전한 하위 호환성을 유지할 수 있다.

 

SemVer를 사용하여 개발자가 버전에따른 소프트웨어 변경사항이 호환성에 어떤 영향을 미칠지 파악할 수 있게 돕는다.

 

 

^ (caret)과 ~ (tilde)

package.json을 자주 살펴본 개발자라면, ^와 ~를 종종 봤을 것이다.

버전을 명시하는 방법은 ^나 ~를 사용하거나 SemVer 숫자만 적는 방법이 있다.

이 셋이 각각 무슨 의미를 가지는지 알아보자.

"axios": "1.4.0"
"got": "^13.0.0"
"ky": "~0.33.3"

API 통신을 위한 세 라이브러리의 버전이 위에 작성되어 있다.

 

axios는 1.4.0으로 작성되어 이는 major, minor, patch 버전이 모두 일치하는 정확히 1.4.0 버전을 의미한다.

 

다음 got은 caret이 작성되어 있는데, 이는 major는 일치해야하지만, minor나 patch 버전은 선언된 버전 이상이어야 한다는 의미이다.

즉, got은 13.0.0버전부터 14.0.0버전 미만의 버전을 허용한다. (허용되는 버전의 예시로는 13.0.1, 13.5.1, 13.0.0, 13.1.1, 13.5.0 등이 있을 수 있다)

 

마지막으로 ky는 tilde가 작성되어 있다. 이는 major, minor버전까지 동일해야하고, patch는 현재 선언된 버전 이상을 허용한다는 의미이다.

즉, ky는 0.33.3 이상 0.34.0 미만의 버전이 허용된다. (허용되는 버전의 예시로는 0.33.3, 0.33.5, 0.33.100 등이 있을 수 있다)

 

 

🌈 참고 자료

https://en.wikipedia.org/wiki/Software_versioning#Semantic_versioning

 

Software versioning - Wikipedia

From Wikipedia, the free encyclopedia Giving a unique identifier to each software update Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Within a given version num

en.wikipedia.org