자취생활 두달차, 느낀점을 정리해보자.
두달동안 자취생활을 하면서 이것저것 느낀점들 및 생각을 정리한 글입니다.
안녕하세요! 오늘은 npm 패키지 버전방식중 틸드(~)와 캐럿(^) 방식에 대해서 알아보도록 하겠습니다.
평소에 React, Next.js 등으로 코딩을 할때 자주보는 package.json 파일에는 틸드(~)와 캐럿(^) 방식이 많이 사용된것을 볼 수 있는데요, package.json 파일에서 라이브러리 버전들을 관리하면서 이 두 방식에 대해서 궁금증을 가지게 되었고, 알아보게 되었습니다.
package.json 파일에 명시된 틸드, 캐럿 버전 방식
일반적으로 소프트웨어 배포 후 그에 따른 버저닝을 하게되는데요, 버전 자리마다 각각 메이저, 마이너, 패치로 통칭됩니다.
메이저: 하위호환이 되지 않을정도의 변화 마이너: 하위호환이 되는 범위내에서 새로운 기능 추가 버전 패치: 하위호환이 되는 범위내에서 버그 등 Fix 버전
위에서 설명드린 소프트웨어 버저닝 용어들을 알아두면, 아래 글을 읽는데 도움이 될것 같습니다.
틸드 버저닝은 패치 버전 내에서 버전이 업데이트 되는 방식을 말합니다.
예를들어, 아래와 같은 틸드 버전이 있을때, 해당하는 범위에 대해서 하위호환성이 가능합니다.
~1.3.0: >= 1.3.0
< 1.4.0
~1.5.2: >= 1.5.2
< 1.6.0
~2.2: >= 2.2
< 2.3
만약 내가 사용하는 React 패키지 버전이 ~17.2.0으로 되어있다면, 해당 React 버전은 17.2.0 ~ 17.3.0 버전까지 하위호환성이 가능하다는 의미입니다.
캐럿 버저닝은 마이너 버전 내에서 버전이 업데이트 되는 방식을 말합니다.
예를들어, 아래와 같은 캐럿 버전이 있을때, 해당하는 범위에 대해서 하위호환성이 가능합니다.
^1.3.0: >= 1.3.0
< 2.0.0
^1.5.2: >= 1.5.2
< 2.0.0
^2.2: >= 2.2.0
3.0.0
만약 내가 사용하는 Next 패키지 버전이 ^13.2.0으로 되어있다면, 해당 React 버전은 13.2.0 ~ 14.0.0 버전까지 하위호환성이 가능하다는 의미입니다.
그러나 캐럿 버저닝 방식에서는 한가지 특징이 있는데, 메이저 버전이 0으로 시작한다면 다르게 동작합니다. 소프트웨어 버저닝 규칙에서 메이저 버전이 0이라면 pre-release로 간주되기 때문이죠.
정식버전(1.0, 2.0 등등)에서는 하위호환성을 고려한 배포가 일어나는 반면, 베타 버전에서는 하위호환성이 되지않는 API 변경이 수시로 일어날 수 있기에 틸드 버저닝으로 작동됩니다.
예를들어, 아래와 같습니다.
^0.3.0: >= 0.3.0
< 0.4.0
^0.5.2: >= 0.5.2
< 0.6.0
^0.2: >= 0.2.0
0.3.0
평소에 틸드와 캐럿 버저닝에 대해서 그냥 보기만 했는데, 이렇게 한번 정리해보고 나니까 머리속에 잘 들어오는거 같네요. 앞으로는 라이브러리 버전에 대해서 깊게 생각 해볼거같네요.
많은분들께 도움이 되었다면 좋겠습니다. 긴 글 읽어주셔서 감사합니다!
두달동안 자취생활을 하면서 이것저것 느낀점들 및 생각을 정리한 글입니다.
프록시 서버의 개념과 포워드 프록시, 리버스 프록시에 대해서 정리해봅시다.