npm
기본 정보
- 이름: npm
- 약칭: npm (Node Package Manager)
- 분류: JavaScript 패키지 관리자(Package Manager)
- 개발사: npm, Inc. (현재 GitHub/Microsoft)
- 최초 공개: 2010년
- 주요 용도: 패키지 설치, 의존성 관리, 프로젝트 스크립트 실행
- 관련 주제: #npm #Nodejs #JavaScript #PackageManager #Frontend
개요
npm(Node Package Manager)은 Node.js 환경에서 사용하는 공식 패키지 관리자이다.
개발자는 npm을 이용해 라이브러리와 프레임워크를 쉽게 설치하고 업데이트할 수 있으며, 프로젝트에서 필요한 의존성(Dependency)을 효율적으로 관리할 수 있다.
React, Vue.js, Next.js, Express 등 대부분의 JavaScript 프로젝트는 npm을 기반으로 관리된다.
npm 구조
npm Registry
↓
npm install
↓
node_modules
↓
프로젝트
↓
npm run
↓
애플리케이션 실행
동작 과정
package.json 생성
↓
패키지 설치
↓
node_modules 생성
↓
개발
↓
빌드
↓
배포
주요 특징
- 패키지 설치
- 의존성 관리
- 버전 관리
- 스크립트 실행
- 오픈소스 생태계 제공
- 자동 업데이트 지원
설치 확인
Node.js 설치 후 함께 제공된다.
npm -v
Node.js 버전 확인
node -v
프로젝트 생성
npm init
기본값으로 생성
npm init -y
package.json
프로젝트 정보를 저장하는 파일이다.
{
"name": "my-project",
"version": "1.0.0",
"scripts": {
"dev": "vite"
}
}
패키지 설치
npm install react
축약형
npm i react
개발 의존성 설치
npm install -D vite
또는
npm i --save-dev vite
빌드 도구나 테스트 도구 설치 시 사용한다.
전역 설치
npm install -g typescript
모든 프로젝트에서 사용할 수 있도록 설치한다.
패키지 삭제
npm uninstall react
패키지 업데이트
npm update
특정 패키지
npm update react
설치된 패키지 확인
npm list
전역 패키지 확인
npm list -g
package-lock.json
의존성 버전을 고정하는 파일이다.
package.json
↓
package-lock.json
↓
동일한 버전 설치
팀 프로젝트에서 동일한 개발 환경을 유지하는 데 중요한 역할을 한다.
node_modules
project/
└── node_modules/
설치된 모든 패키지가 저장되는 폴더이다.
일반적으로 Git에는 포함하지 않는다.
.gitignore
node_modules/
.env
dist/
node_modules는 용량이 크므로 버전 관리에서 제외하는 것이 일반적이다.
npm scripts
{
"scripts": {
"dev": "vite",
"build": "vite build",
"start": "node app.js"
}
}
실행
npm run dev
package.json 의존성
dependencies
운영 환경에서 필요한 패키지
"dependencies": {
"react": "^19.0.0"
}
devDependencies
개발 환경에서만 필요한 패키지
"devDependencies": {
"vite": "^7.0.0"
}
Semantic Versioning
1.2.3
↓
Major.Minor.Patch
| 번호 | 의미 |
|---|---|
| Major | 큰 변경(호환성 깨짐) |
| Minor | 기능 추가 |
| Patch | 버그 수정 |
버전 기호
^
~
*
| 기호 | 의미 |
|---|---|
| ^ | Minor, Patch 업데이트 허용 |
| ~ | Patch 업데이트만 허용 |
| 정확한 버전 | 지정한 버전만 사용 |
npm Registry
Developer
↓
npm Registry
↓
Package Download
공식 저장소에서 패키지를 다운로드한다.
npm과 npx 차이
| npm | npx |
|---|---|
| 패키지 설치 | 패키지 즉시 실행 |
| 프로젝트에 저장 가능 | 설치 없이 실행 가능 |
| 지속 사용 | 일회성 실행에 적합 |
예시
npx create-next-app
npm과 Yarn 비교
| npm | Yarn |
|---|---|
| Node.js 기본 포함 | 별도 설치 |
| 공식 패키지 관리자 | Meta 개발 |
| 보편적으로 사용 | 빠른 설치 성능으로 인기 |
| package-lock 사용 | yarn.lock 사용 |
대표 활용 분야
- React 개발
- Next.js 개발
- Vue.js 개발
- Node.js 서버 개발
- TypeScript 프로젝트
- CLI 도구 설치
- AI 프론트엔드 개발
- 웹 애플리케이션 개발
장점
- 거대한 패키지 생태계
- 쉬운 설치와 업데이트
- 의존성 자동 관리
- 프로젝트 자동화 지원
- 무료 사용 가능
- Node.js와 기본 제공
단점
node_modules용량이 커질 수 있음- 의존성 충돌 가능성
- 보안 취약 패키지 관리 필요
- 패키지 수가 많아 설치 시간이 길어질 수 있음
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
npm ci를 사용하여 CI 환경에서 일관된 설치 수행package-lock.json은 Git에 포함node_modules는 Git에서 제외npm audit로 보안 취약점 점검- 불필요한 패키지 제거
scripts를 활용한 빌드 자동화- 환경 변수는
.env로 관리 - 버전 업그레이드 전 변경 사항 확인
- 전역 설치는 최소화
- 팀 내 Node.js 및 npm 버전 통일
npm과 함께 사용하는 기술
대표 명령어
| 명령어 | 설명 |
|---|---|
npm init -y | 프로젝트 초기화 |
npm install | 패키지 설치 |
npm uninstall | 패키지 삭제 |
npm update | 패키지 업데이트 |
npm run dev | 개발 서버 실행 |
npm run build | 빌드 실행 |
npm audit | 보안 검사 |
npm ci | 잠금 파일 기준 설치 |
관련 문서
출처
- npm 공식 홈페이지
- npm 공식 문서
- Node.js 공식 문서