package.json은 프로젝트의 정보를 정의하고, 의존하는 패키지 버전 정보를 명시하는 파일이다.
일반적으로 Root 디렉토리에 위치한다.
npm init 으로 package.json을 생성했다면 터미널에서 입력 프로세스와 함께 프로젝트 정보는 이미 name(프로젝트명)과 version(1.0.0)이 자동 입력되어 생성되었을 것이다. 패키지 변경은 버전 변경과 함께 제공되어야 한다는 것만 우선 기억하도록 하자.
이번 글은 패키지 정보에 포커스를 맞출 것이므로 프로젝트 정보에 대한 추가 설명을 진행하지 않겠다.
패키지와 모듈
1. 패키지
패키지는 package.json으로 설명되는 파일 또는 디렉토리이다. 패키지는 npm 레지스트리에 공개되기 위해 반드시 package.json 파일을 가지고 있어야 한다.
2. 모듈
모듈은 node.js의 require() 함수로 로드될 수 있는 node_modules 디렉토리 안의 파일 또는 디렉토리이다.
주의
모듈은 package.json 파일을 가질 필요가 없다. 이 모듈들이 패키지는 아니다. package.json을 가진 모듈만이 패키지이다.
(모듈이 패키지보다 조금 큰 개념)
패키지 지정
패키지를 지정하기 위해 package.json 파일의 "dependencies" 또는 "devDependencies"에 패키지를 명시해야 한다.
npm init 또는 npm install을 실행 시 package.json에 나열된 각각의 시멘틱 버전 요구 사항을 충족하는 "dependencies"와 "devDependencies"를 다운받는다.
- dependencies : 프로덕션 환경에서 응용 프로그램에 필요한 패키지
- devDependencies : 로컬 개발 및 테스트에만 필요한 패키지
시맨틱 버저닝
버전은 .dot을 기준으로 3영역 Major, Minor, Patch로 구분된다.
상태 | 단계 | 규칙 | 예시 |
최초 출시 | 새로운 제품 | 1.0.0으로 시작 | 1.0.0 |
이전 버전과 호환되는 버그 수정 | 패치 | 3번째 숫자를 증가시킴 | 1.0.1 |
이전 버전과 호환되는 새로운 기능 | 마이너 | 가운데 숫자를 증가시키고 마지막 숫자를 0으로 만듬 | 1.1.0 |
이전 버전과 호환되지 않는 변경 | 메이저 | 첫번째 숫자를 1 증가시키고 가운데와 마지막 숫자를 0으로 만듬 | 2.0.0 |
패키지 버전
캐럿(^) - 해당 패키지의 마이너, 패치 변경을 허용한다는 의미
^[MAJOR].[MINOR].[PATCH] : MINOR 버전까지 자동으로 업데이트
~[MAJOR].[MINOR].[PATCH] : PATCH 버전만 자동으로 업데이트
>, >=, <, <= : 지정한 범위에 해당하는 경우에만 업데이트
최근에는 틸트(~)보단 캐럿(^)을 많이 사용한다.
'개념 정리' 카테고리의 다른 글
[알고리즘] 시간 복잡도(Time Complexity) (0) | 2023.02.20 |
---|---|
쿠키, 세션, 캐시, 토큰 (0) | 2022.05.02 |
package.json과 package-lock.json 그리고 node_modules (0) | 2022.04.21 |
스택(STACK), 큐(QUEUE) (0) | 2022.04.19 |
폴리필(polyfill) (0) | 2022.02.07 |