NPM은 전 세계 자바스크립트 개발자들이 만들어 놓은 수많은 코드(패키지)를 손쉽게 다운로드하고 관리할 수 있게 해주는 도구입니다. Node.js 프로젝트의 심장과도 같은 package.json 파일은 프로젝트의 메타데이터와 더불어, 어떤 패키지의 몇 버전을 사용하는지(Dependencies)를 기록하는 중요한 명세서 역할을 합니다.
패키지 설치 시 자동으로 생성되는 파일로, 하위 의존성(dependency의 dependency)까지 포함하여 설치된 모든 패키지의 정확한 버전 트리를 고정(Lock)합니다. 이를 통해 다른 개발자나 배포 서버에서도 완전히 동일한 버전의 패키지들이 설치되는 것을 보장합니다.
| 버전 표기법 (기호) | 의미 및 동작 방식 (Semantic Versioning) |
|---|---|
| "express": "4.18.2" | 정확한 버전 (Exact Version): 기호가 없으면 오직 4.18.2 버전만 설치합니다. |
| "express": "^4.18.2" | Caret (캐럿) - 권장: 마이너(Minor) 및 패치(Patch) 버전을 자동 업데이트합니다. (ex. 4.19.0, 4.18.5 허용 / 5.0.0 불가) |
| "express": "~4.18.2" | Tilde (틸드): 오직 패치(Patch) 버전만 자동 업데이트합니다. (ex. 4.18.9 허용 / 4.19.0 불가) |
| 패키지 옵션 | 명령어 예시 | 사용 목적 |
|---|---|---|
| dependencies | npm install [패키지명] |
실제 앱 실행(프로덕션)에 반드시 필요한 핵심 라이브러리 (ex: express, react) |
| devDependencies | npm install -D [패키지명] |
개발 단계에서만 사용되고 실제 서비스 배포 시에는 제외되는 도구들 (ex: nodemon, jest, typescript) |
아래 터미널 로그는 빈 프로젝트에서 npm init -y로 초기화한 뒤, npm install express 명령어로 외부 패키지를 설치했을 때 파일 시스템과 터미널에서 일어나는 변화를 보여줍니다.