tooling
npm, yarn, pnpm.
패키지 매니저 역할, lockfile, workspace, npm/yarn/pnpm 차이
패키지 매니저는 의존성 설치, 버전 고정, 스크립트 실행을 담당합니다. npm, yarn, pnpm은 같은 package.json을 쓰지만 node_modules 구조와 lockfile이 다릅니다.
📦 package.json 핵심
| 필드 | 설명 |
|---|---|
dependencies | 프로덕션 런타임 |
devDependencies | 빌드, 테스트, lint |
peerDependencies | 호스트가 제공해야 하는 패키지 (플러그인) |
scripts | npm run dev 등 단축 명령 |
engines | Node 버전 제약 |
- semver:
^1.2.3(minor/patch 허용),~1.2.3(patch만), exact1.2.3
🔒 lockfile
| 도구 | lockfile |
|---|---|
| npm | package-lock.json |
| yarn | yarn.lock |
| pnpm | pnpm-lock.yaml |
- 팀/CI 동일 트리 보장
- lockfile 없이 install → 버전 drift
⚖️ npm vs yarn vs pnpm
| npm | yarn | pnpm | |
|---|---|---|---|
| 속도 | 보통 | 빠름 | 매우 빠름 (링크) |
| disk | 중복 설치 多 | 중복 有 | content-addressable store, hard link |
| monorepo | workspaces | workspaces | workspace 강력 |
| CLI | npx | yarn dlx | pnpm dlx |
-
pnpm:
node_modules/.pnpm+ symlink, phantom dependency 방지 (엄격) -
npm v7+: peer deps 자동, workspaces 지원
-
프로젝트 하나의 패키지 매니저만 (lockfile 혼용 X)
-
npm ci/pnpm install --frozen-lockfile— CI용 clean install -
npx/pnpm exec— 로컬 bin 일회 실행 -
.npmrc: registry mirror,engine-strict
🔗 참고 자료
- npm Docs — npm CLI와 패키지 관리 공식 문서다.
- package-lock.json — lockfile로 의존성 트리를 고정하는 방법을 설명한다.
- Yarn — Yarn 패키지 매니저 공식 문서다.
- pnpm — content-addressable store 기반 pnpm 문서다.
- pnpm Motivation — symlink와 phantom dependency 방지를 설명한다.
