Node.js 모듈 시스템과 npm 의존성: package-lock 원리

💡 핵심 요약 (Executive Summary)

본 가이드는 concept node npm 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents

Package.json 버전표기법

버전 구성

버전은 크게 3가지로 분류 됩니다.

Major.Minor.Patch

  • Major : 이전 버전과 호환성이 보장되지 않는 업데이트이며 주로 대규모 업데이트가 일어났을 때 메이저 버전이 변경됩니다.
  • Minor : 이전 버전과 호환 되면서 일부 새로운 기능이 추가되거나 수정되는 업데이트가 일어났을 때 마이너 버전이 변경됩니다.
  • Patch : 버그 수정 및 성능 개선과 관련된 업데이트가 일어났을 때 패치 버전이 변경됩니다.
버전을 표기하는 방법이 여러개?

package.json 을 보면 다음과 같이 버전 앞에  \~  또는  \^  문자가 붙은 것을 볼 수 있습니다.

이 둘의 차이에 대해 알아보겠습니다.

Tilde (틸드, \~)

버전 앞에 \~ 표시는 tilde (틸드) 라고 부르며, 최신 패치 버전을 가리키는 데 사용됩니다. 예를 들어 package.json 에 \~2.4.1 으로 명시를 한 상태에서 패키지 저장소에 2.4.3 최신 버전이 출시된 상태라고 한다면 npm install 을 진행 할 때 설치 되는 버전은 2.4.3 이 되는 것입니다. 이 때 패키지 저장소에 메이저 및 마이너 버전보다 높은 버전이 출시 되었다 하더라도 tilde 는 앞에 메이저 버전과 마이너 버전은 유지하고 패치 버전에 대해서만 최신 버전을 가져옵니다.

Caret (캐럿, \^)

버전 앞에 \^ 표시는 caret (캐럿) 이라고 부르며, 최신 패치 버전 뿐만 아니라 최신 마이너 버전을 가리키는 데 사용됩니다. 예를 들어 package.json 에 \^2.4.1 으로 명시를 한 상태에서 패키지 저장소에 2.7.7 최신 버전이 출시된 상태라고 한다면 npm install 을 진행 할 때 설치되는 버전은 2.7.7 이 되는 것입니다. 이 때 패키지 저장소에 메이저 버전보다 높은 버전이 출시 되었다 하더라도 caret 은 앞에 메이저 버전은 유지하고 마이너 버전과 패치 버전에 대해서만 최신 버전을 가져옵니다.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *