Semantic Versioning이란?
- 아래와 같이 노드 패키지들의 버전은 세 자리로 되어있다. 이는 세 자리가 모두 의미가 있다는 뜻의 Semantic Versioning이라고 하면 줄여서 SemVer이라고도 한다.

- 첫번째 - MAJOR version(호환되지 않는 API 변경 시 MAJOR 버전)
- 두번째 - MINOR version(이전 버전과 호환되는 방식으로 기능을 추가하는 경우의 MINOR 버전
- 세번째 - PATCH version(이전 버전과 호환되는 버그 수정 시 PARCH 버전)
틸드(~)
- PATCH 버전까지만 설치 또는 업데이트한다.
- 현재 지정한 버전의 마지막 자리 내의 범위에서만 자동으로 업데이트한다.
ex)
~0.0.1 -> (>=0.0.1 <0.1.0)뒷자리(PATCH)만 업데이트 가능
- 버전을 명시했을 때 위와 같은 범위 내에서 자동으로 업데이트
캐럿
- MINOR 버전까지만 설치 또는 업데이트한다.
ex) ^1.0.5 -> (>=1.0.5 <2.0) 가운데(MINOR)와 맨뒤(PATCH)업데이트 가능
단, 버전이 1.0.0 미만인 경우에는 예외다.
왜냐하면 API 변경이 계속 일어나는데, 0.3을 쓰다가 0.4를 사용하면 API가 호환이 안 될 수도 있다. 그래서 틸트처럼 맨뒤만 업데이트가 가능하다.