Semantic Versioning이란?

iamsummer__·2020년 6월 10일
2

일반적으로 npm에서 install을 하다보면

npm install react —save

package.json에 ^,~가 붙는 것을 확인해볼 수 있습니다.

Semantic Versioning(SemVer)이란?

시맨틱 버저닝(Semantic Versioning)은 소프트웨어의 버전 변경 규칙에 대한 제안입니다.

Nodejs,npm 모두 Semantic Versioning을 따르고 있습니다.

Semantic Versioning을 줄여서 SemVer이라하며 특징에 대해서 알아보도록 하겠습니다.

  • MAJOR Version이 올라가면 MINOR Version과 PATCH Version은 0이 되야합니다.
  • MINOR Version이 올라가면 PATCH Version이 0이 반드시 되어야 합니다.
  • 정식배포전에 pre-release하는 경우에는 -또는 . 을 사용합니다.
  • 정식배포전에 git commit후 난수가 붙는 경우 그대로 배포할 경우를 build metadata라고 합니다.
    ex) 16.9.0-alpha.0
  • MAJOR에 0으로 시작하는 경우(0.y.z)는 은 초기 개발을 위해서 사용합니다.

SemVer 종류

SemVer종류에 대해서 알아보도록 하겠습니다.

  • MAJOR: API 호환성이 깨질만한 변경사항
  • MINOR: 하위 호환성 지키면서 API 기능이 추가된 것
  • PATCH: 하위 호환성 지키는 범위 내에서 버그가 수정된 것

범위지정

틸드범위(~)

  • Minor version이 지정되어 있다면 patch level변경을 허용합니다.
  • Minor version이 지정되어 있지 않으면 minor-level 변경또한 허용합니다.

~1.3.2 : minor version이 지정되어 있으므로 patch level 변경을 허용합니다.
~2: minor version이 지정되어있지 않으므로 minor- level변경을 허용합니다.

캐럿범위(^)

  • 가장 왼쪽에 0이 아닌 요소를 수정하지 않는 범위로 변경을 허용합니다.
  • 1.0.0버전이면 minor, patch level 버전 업데이트 허용
  • 0.X 버전이면 patch level 업데이트 허용
  • 0.X.X버전이면 업데이트 허용하지 않음

^1.3.x: minor, patch level 업데이트 허용
^0.1.x: 0이 아닌 처음요소가 minor이므로 patch level 업데이트 허용
^0.0.3: 0이 아닌 처음요소가 patch이므로 업데이트 허용하지 않음

추가로 major version이 0으로 시작하는 경우는 아직 1.0.0이 정식으로
릴리즈된게 아니기 때문에 0.1과 0.2 사이에 호환성이 손상되는 변경(breaking-change)이 발생할 수 도 있습니다.

범위에 대해서 헷갈릴 때 각 라이브러리별 확인 가능한 유용한 웹사이트입니다.
참고: https://semver.npmjs.com/

npm install시 버전관리

react를 npm에서 설치를 할 때 보통 npm install rect —save 라고 하면
최신 버전으로 세팅이 되면 캐럿이 추가된것을 package.json에서 볼 수 있습니다.

16.13.1버전이 설치가 되어있고 minor,patch버전까지 업데이트가 되어도 된다는 것을 의미합니다.
만약 버전을 fix 하고 싶다면 npm install react --save-exact
캐럿이 붙지 않은 상태로 설치가 됩니다

profile
개발하는 프론트엔드개발자

0개의 댓글