All Articles

[20200319 TIL] npm 캐럿(^)


2020-03-19 TIL


npm version 캐럿(^)

캐럿은 Semantic Versioning(보통 SemVer)라고 부른다.

Node.js, npm의 모듈은 모두 SemVer를 따르고 있다. SemVer은 MAJOR.MINOR.PATCH의 버저닝을 따르는데 각 의미는 다음과 같다.

MAJOR 버전 - API의 호환성이 깨질만한 변경사항을 의미

MINOR 버전 - 하위호환성을 지키면서 기능이 추가된 것을 의미

PATCH 버전 - 하위호환성을 지키는 범위내에서 버그가 수정된 것을 의미

캐럿에 대한 오류

캐럿은 근래에 추가된 기능이므로 과거 버전의 npm은 캐럿을 이해하지 못한다. 그래서 캐럿이 없는 구 버전의 npm에서 캐럿을 사용하면 Error: No compatible version found 같은 오류가 발생한다.

이는 npm install -g npm 을 통해서 npm을 최신 버전으로 올리면 해결할 수 있다.

npm v1.4.3 부터는 npm install MODULE —save 나 npm install MODULE —save-dev를 사용했을 때 기본값이 틸드 대신 캐럿이 되었기 때문에 틸드를 사용하고자 한다면 매번 직접 수정해야 한다. 그리고 본인은 틸드 방식을 사용하더라도 참조한 모듈이 다른 모듈을 참조할 때 캐럿을 사용할 수도 있으므로 npm을 최신 버전으로 업데이트하지 않으면 결국 오류가 나서 제대로 설치가 안 될 것이다.