본문 바로가기
  • 아하하
개발

버전표기법

by 쥬쥬파파 2021. 7. 29.

Semantic versioning

일반적인 규칙

  1. 버전 번호는 Major, Minor, Patch 의 형태로 배포하고, Major, Minor, Patch 는 각각 자연수이고 절대 앞에 0이 붙어서는 안된다.
  2. 각 번호의 수는 항상 증가해야 한다.
  3. 특정 버전으로 패키지를 배포하고 나면, 그 버전의 내용은 절대 변경하지 말아야한다. 변경분이 있다면 반드시 새로운 버전으로 배포하도록 한다.
  4. Major 버전이 변경될 때, Minor, Patch 는 0으로 초기화 된다.
  5. 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

 

'개발' 카테고리의 다른 글

VS Code에서 ESlint와 Prettier 함께 사용하기  (0) 2020.12.30
SVN 프로젝트 추가  (0) 2019.01.22