더북(TheBook)

5.3 패키지 버전 이해하기

 

노드 패키지들의 버전은 항상 세 자리로 이루어져 있습니다. 심지어 노드의 버전도 세 자리입니다. 버전이 세 자리인 이유는 SemVer 방식의 버전 넘버링을 따르기 때문입니다.

SemVer는 Semantic Versioning(유의적 버전)의 약어입니다. 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는 뜻입니다.

각각 패키지는 모두 버전이 다르고 패키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지의 버전을 업그레이드했는데 그것을 사용하는 다른 패키지에서 에러가 발생한다면 문제가 됩니다. 많은 패키지가 서로 얽히다 보면 이 문제는 점점 더 심각해집니다. 따라서 버전 번호를 어떻게 정하고 올려야 하는지를 명시하는 규칙이 등장했습니다. 이것이 바로 SemVer입니다.

버전의 첫 번째 자리는 major 버전입니다. 주 버전이 0이면 초기 개발 중이라는 뜻입니다. 1부터는 정식 버전이라는 뜻입니다. major 버전은 하위 호환이 안 될 정도로 패키지의 내용이 수정되었을 때 올립니다. 예를 들어 1.5.0에서 2.0.0으로 올렸다는 것은, 1.5.0 버전 패키지를 사용하고 있던 사람들이 2.0.0으로 업데이트했을 때 에러가 발생할 확률이 크다는 뜻입니다.

두 번째 자리는 minor 버전입니다. minor 버전은 하위 호환이 되는 기능 업데이트 시에 올립니다. 버전을 1.5.0에서 1.6.0으로 올렸다면 1.5.0 사용자가 1.6.0으로 업데이트했을 때 아무 문제가 없어야 합니다.

세 번째 자리는 patch 버전입니다. 새로운 기능이 추가되었다기보다는 기존 기능에 문제가 있어 수정한 것을 내놓았을 때 patch 버전을 올립니다. 1.5.0에서 1.5.1처럼요. 당연히 업데이트 후 아무 문제가 없어야 합니다.

▲ 그림 5-5 SemVer

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.