본문 바로가기
Etc

package.json에서 물결 표시(~)와 웃음 표시(^)의 차이

by chuckolet 2020. 6. 20.
npm install을 하면 자동으로 붙는 물결 표시(~)와 웃음 표시(^)가 있습니다.
 
^ 표시 예시

 

저절로 붙기 때문에 별 생각 없이 사용하고는 했는데 제대로 알고 사용하지 않으면 다른 사람과 협업할 때 서로 버전이 다른 환경에서 작업을 하여 불 필요한 디버깅을 하게 될 수도 있습니다.

 

NPM과 semver 공식 문서에 따르면,

  • ~version: version과 거의 비슷한 버전으로, minor 버전은 올리지 않고 모든 앞으로의 patch 버전을 업데이트 합니다.
    • ex) ~1.2.3 은 1.2.3 < 1.3.0의 릴리즈를 사용할 겁니다. 
  • ^version: version과 호환되는 버전으로, major 버전은 올리지 않고 모든 앞으로의 minor/patch을 업데이트 합니다.
    • ex) ^2.3.4 는 2.3.4 < 3.0.0의 릴리즈를 사용할 겁니다.

cf) 업데이트 버전은 Semantic versioning에 따르면 왼쪽부터 major.minor.patch라고 읽음. 왼쪽의 숫자가 바뀔 수록 큰 규모의 업데이트를 말하며, patch는 API가 변하지 않는 작은 변경이나 버그 픽스, minor는 이전 버전과 호환 되는 새로운 API feature들, major는 이전 버전과 호환되지 않을 수도 있는 API 변경을 말합니다.

 

정리하자면, 더 안정적인 호환을 원한다면 ~을 사용하고, 안정성보다는 좀 더 최신 업데이트 된 버전을 사용해도 된다면 ^을 사용하시면 됩니다.

 

References

 

 

 

제 글이 도움이 되셨다면 간단하게 '공감', '댓글' 부탁드립니다!

 

 

댓글