npm SemVer 캐럿(^)과 틸드(~) 차이

김태완·2023년 3월 23일
1

프론트엔드

목록 보기
27/30

우선 Semantic Versionin(=== SemVer)에 대해서 알아보자.

시맨틱 버져닝이란 소프트웨어의 버전 변경 규칙에 대한 제안이다.
npm에서는 Major.Minor.Patch의 버저닝 방식을 따른다
ex) 18.2.0 일때 Major은 18, Minor은 2, Patch는 0을 나타낸다.

  • Major : API의 호환성이 깨질만한 변경사항
  • Minor : 하위 호환성은 지키면서 API기능이 추가된것
  • Patch : 하위 호환성이 지켜지는 범위 내에서 버그가 수정된것.

캐럿(^)

캐럿은 Major을 기준으로 하여, MinorPatch버전의 하위호환성을 보장한다

캐럿의 예시를 보자

  • ^1.0.2 : 1.0.2 <= 여기 < 2.0
  • ^1.0 : 1.0.0 <== 여기 < 2.0
  • ^1 : ^1.0.0 <= 여기 < 2.0

단, 버전이 1.0.0미만인 경우(pre-release)인경우엔 틸드(~)처럼 동작한다

  • ^0.1.2 : 0.1.2 <= 여기 < 0.2.0
  • ^0.1 : 0.1.0 <= 여기 < 0.2.0
  • ^0.0.1 : == 0.0.1

틸드(~)

틸드는 현재 지정한 버전의 마지막 자리 내의 범위에서만 자동으로 업데이트 한다.

Minor버전이 지정되어있다면 Patch레벨에서의 업데이트를 허용
Minor버전이 지정되지않았다면 Minor레벨에서의 업데이트를 허용

틸드의 예시를 보자

  • ~0.0.1 : 0.0.1 <= 여기 < 0.1.0
  • ~0.1.1 : 0.1.1 <= 여기 < 0.2.0

참고

https://velog.io/@iamjoo/Semantic-Versioning%EC%9D%B4%EB%9E%80

profile
프론트엔드개발

0개의 댓글