Node.js 패키지 매니저는 JavaScript 의존성을 설치, 버전 관리, 공유한다. npm은 기본 내장, pnpm은 디스크 효율, Yarn은 속도와 일관성에 강점이 있다.
비교
| 특성 | npm | pnpm | Yarn Classic | Yarn Berry |
|---|
| 속도 | 기준 | 가장 빠름 | 빠름 | 빠름 |
| 디스크 | 중복 설치 | 링크 공유 | 중복 설치 | Plug'n'Play |
| node_modules | 있음 | 있음(심볼릭) | 있음 | 없음 가능 |
| 워크스페이스 | O | O | O | O |
npm
bash
npm install # 의존성 설치
npm install express # 패키지 추가
npm install -D jest # devDependencies
npm install -g tsx # 글로벌 설치
npm update # 의존성 업데이트
npm audit fix # 보안 취약점 자동 수정
npm run build # scripts 실행
npx create-react-app . # 패키지 임시 실행
pnpm
bash
pnpm install
pnpm add react
pnpm add -D typescript
# 워크스페이스 (모노레포)
# pnpm-workspace.yaml:
# packages:
# - 'packages/*'
pnpm -r build # 모든 패키지 빌드
# 글로벌 저장소로 디스크 절약
pnpm store status
pnpm store prune
package.json 핵심
json
{
"name": "my-app",
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"build": "tsc",
"test": "jest"
},
"dependencies": { "express": "^4.18.0" },
"devDependencies": { "typescript": "^5.0.0" },
"engines": { "node": ">=18" },
"exports": {
".": { "import": "./dist/index.js", "require": "./dist/index.cjs" }
}
}
관련 개념