패키지 버전 이해하기
노드 패키지들의 버전은 항상 세 가지로 이루어져 있습니다. 심지어 노드의 버전도 세 자리입니다. 버전이 세 자리인 이유는 SemVer 방식의 버전 넘버링이 따르기 때문입니다.
SemVer는 Semantic Versioning(유의적 버전)의 약어입니다. 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는 뜻입니다.
각각의 패키지는 모두 버전이 다르고 페키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지의 버전을 업그레이드했는데, 그것을 사용하는 다른 패키지에서 에러가 발생한다면 문제가 됩니다. 많은 패키지가 서로 얽히다 보면 이 문제는 점점 더 심각해집니다. 따라서 버전 번호를 어떻게 정하고 올려야 하는지를 명시하는 규칙이 등장했습니다.
버전의 첫 번째 자리는 major 버전입니다. major 버전이 0이면 초기 개발 중이라는 뜻입니다. 1부터는 정식 버전을 의미합니다. major 버전은 하위 호환이 안 될 정도로 패키지의 내용이 수정되었을 때 올립니다.
두 번째 자리는 minor 버전입니다. minor 버전은 하위 호환이 되는 기능 업데이트를 할 때 올립니다.
세 번째 자리는 patch 버전입니다. 새로운 기능이 추가되었다기보다는 기존 기능에 문제가 있어 수정한 것을 내놓았을 때 patch 버전을 올립니다.

새 버전을 배포한 후에는 그 버전의 내용을 절대 수정하면 안됩니다. 만약 수정 사항이 생기면 major 버전, minor 버전, patch 버전 중 하나를 의미에 맞게 올려서 새로운 버전으로 배포해야 합니다. 이렇게 하면 배포된 버전 내용이 바뀌지 않아서 패키지 간 의존 관계에 큰 도움이 되며, 특정 버전을 사용하면 어떠한 경우라도 정상적으로 동작할 것이라 믿을 수 있습니다.
버전의 숫자마다 의미가 부여되어 있으므로 다른 패키지의 major 버전이 업데이트되었다면 기존 코드와 호환되지 않을 확률이 크므로 미리 주의를 기울여야 합니다. major나 patch 버전 업데이트는 비교적 안심하고 버전을 올릴 수 있습니다.
package.json에는 SemVer식 세 자리 버전외에도 버전 앞에서 ^이나 ~ 또는 >, < 같은 문자가 붙어 있습니다. 이 문자는 버전에는 포함되지 않지만 설치하거나 업데이트할 때 어떤 버전을 설치해야 하는지 알립니다.
^ 기호는 minor 버전까지만 업데이트합니다.
~ 기호를 사용한다면 patch 버전까지만 설치하거나 엄데이트합니다.
>, <. > =, < =, =은 알기 쉽게 추가, 미만, 이상, 이하, 동일을 뜻합니다.
@latest는 안정된 최신 버전의 패키지를 설치합니다. x로도 표현할 수 있습니다.
@next를 사용하면 가장 최근 배포판을 사용할 수 있습니다. @latest와 다른 점은 안정되지 않은 알파나 베타 버전의 패키지를 설치할 수 있다는 것입니다.
'프로그래밍 언어 > NODE JS' 카테고리의 다른 글
| 패키지 배포하기 (0) | 2025.06.07 |
|---|---|
| 기타 npm 명령어 (2) | 2025.06.07 |
| npm 알아보기 & package.json으로 패키지 관리하기 (1) | 2025.06.01 |
| cluster (0) | 2025.05.29 |
| https와 http2 (0) | 2025.05.26 |