Semantic versioning
일반적인 규칙
- 버전 번호는 Major, Minor, Patch 의 형태로 배포하고, Major, Minor, Patch 는 각각 자연수이고 절대 앞에 0이 붙어서는 안된다.
- 각 번호의 수는 항상 증가해야 한다.
- 특정 버전으로 패키지를 배포하고 나면, 그 버전의 내용은 절대 변경하지 말아야한다. 변경분이 있다면 반드시 새로운 버전으로 배포하도록 한다.
- Major 버전이 변경될 때, Minor, Patch 는 0으로 초기화 된다.
- Minor 버전이 변경될 때, Patch 는 0으로 초기화 된다.
Major 버전 증가
- 하위 버전과 호환되지 않는 변화가 생겼을 때
- 대대적인 변화가 일어났을 때
- 클라이언트가 1.0.0 버전의 API 접근 방식으로 2.0.0 버전에 접속할 수 없을 때
Minor 버전 증가
- 하위 버전과 호환이 되면서, 새로운 기능이 추가 될 때
- 새로운 기능이 추가된 API 가 나왔지만, 기존의 공개된 API 가 하위 호환되고 있을 때
- 기존의 기능이 변경되거나 사용 방법이 변경 되었을 때
Patch 버전 증가
- 버그 수정
- 기존 클라이언트가 알아차리지 못할 정도의 작은 변화가 있을 때
- 서버 코드 내부적으로 소스가 수정되었을 때
- 당연한 얘기겠지만, 이 모든 것들이 하위 버전과 호환될 때
버전의 범위
- 틸드(~) : 현재 지정한 버전의 마지막 자리 내의 범위에서만 자동으로 업데이트한다
- ~0.0.1 : >=0.0.1 <0.1.0
- ~0.1.1 : >=0.1.1 <0.2.0
- ~0.1 : >=0.1.0 <0.2.0
- ~0 : >=0.0 <1.0
- 캐럿(^)
- 하위호환성이 보장
- ^1.0.2 : >=1.0.2 <2.0
- ^1.0 : >=1.0.0 <2.0
- ^1 : >=1.0.0 <2.0
- 단 버전이 1.0.0 이하인경우 틸드와 같이 동작
- ^0.1.2 : >=0.1.2 <0.2.0 --> ~0.1.2
- ^0.1 : >=0.1.0 <0.2.0 --> ~0.1
- ^0 : >=0.0.0 <1.0.0 --> ~0
- ^0.0.1 : ==0.0.1
참고: https://blog.outsider.ne.kr/1041
npm package.json에서 틸드(~) 대신 캐럿(^) 사용하기 :: Outsider's Dev Story
한 달 정도 전에 트위터에서 다음과 같은 트윗을 보고 처음 캐럿(`^`)의 존재를 알게 되었다. 아랫글의 의미는 npm에서 `package.json`에서 의존성의 버전을 명시할 때 기존의 기본값인 `~1.2.3`대신 `^1.2
blog.outsider.ne.kr
https://kiwinam.com/posts/33/version-naming/
Software 버전 관리 규칙, 너만 모르는 Semantic versioning :: 키위남
소프트웨어를 개발하다보면 정말 수많은 규칙들을 세우고 없애고 수정하는 것 같아요. 저도 혼자 개발하고 흡–족 할 때는 이런 규칙과 컨벤션들에 대해 무관심 했었는데, 이제 프로로 데뷔한
kiwinam.com
반응형
'개발' 카테고리의 다른 글
Node.js와 Vue3 PDF 미리보기 & Node 버전 관리 정리 (1) | 2025.06.23 |
---|---|
Supabase와 Node.js 개발 환경 문제 해결 노트 (0) | 2025.04.29 |
REST API와 Webhook 완벽 비교: 차이점, 사용 사례, 실전 예시까지! (0) | 2025.04.29 |
VS Code에서 ESlint와 Prettier 함께 사용하기 (0) | 2020.12.30 |
SVN 프로젝트 추가 (0) | 2019.01.22 |