본문 바로가기
C.W.K.
Stream
Lesson 03 of 05 · published

매일 치는 pnpm 명령

~12 min · pnpm, commands, workflow

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

pnpm 명령은 npm과 충분히 비슷해서 기존 습관을 대부분 그대로 옮길 수 있고, 몇 가지는 의도적으로 더 편하게 다듬었어.

pnpm add <pkg>는 런타임 의존성을, pnpm add -D <pkg>는 개발 의존성을 추가하고, pnpm remove <pkg>는 제거해. 인자 없는 pnpm install은 lockfile의 모든 의존성을 설치해. pnpm install --frozen-lockfilenpm ci에 해당하는 엄격하고 빠른 명령이므로 CI에서 사용해.

pnpm <script>run 없이 스크립트를 바로 실행해. pnpm buildpnpm run build의 짧은 형태라서 타이핑도 줄고 실수할 여지도 작아져.

pnpm dlx <tool>는 pnpm의 npx야. 도구를 설치하지 않고 실행하므로 npx create-vite my-app 대신 pnpm dlx create-vite my-app을 쓸 수 있어.

pnpm store는 전역 콘텐츠 주소 저장소를 관리해. pnpm store path는 위치를, pnpm store status는 상태를 보여 주고, pnpm store prune은 어느 프로젝트에서도 참조하지 않는 패키지를 지워.

pnpm why <pkg>는 해당 패키지가 왜 의존성 트리에 들어왔는지 알려 줘. 복잡한 lockfile을 직접 펼치는 대신 쓸 수 있는 가장 유용한 진단 명령이야.

Code

npm과 닮은 일상 pnpm 명령·bash
# 추가 / 제거
pnpm add express
pnpm add -D vitest typescript
pnpm remove express

# 모든 거 install
pnpm install

# CI install (npm ci 등가물)
pnpm install --frozen-lockfile

# 스크립트 실행 ('run' 불필요)
pnpm build
pnpm test
pnpm dev

# install 없이 도구 실행
pnpm dlx create-vite my-app
저장소 관리와 의존성 진단·bash
# 글로벌 content-addressable store 가 어디 사나?
pnpm store path

# 건강 체크
pnpm store status

# 어떤 프로젝트도 reference 안 하는 패키지 삭제로 디스크 회수
pnpm store prune

# 왜 이 패키지가 트리에?
pnpm why react
pnpm why -r react       # 모든 workspace 에서 검색
npm에서 이전하기·bash
# 기존 npm 관리 프로젝트에서 (package-lock.json 있음)
pnpm import          # package-lock.json -> pnpm-lock.yaml 변환
rm package-lock.json # 옛 lockfile 제거
rm -rf node_modules  # 옛 install 정리
pnpm install         # pnpm 통한 새 install

External links

Exercise

작은 npm 프로젝트에서 'pnpm import'를 실행한 뒤 package-lock.json과 node_modules를 지우고 'pnpm install'을 실행해. 전후의 node_modules 크기를 비교하고, 'pnpm why <깊은 의존성 이름>'으로 그 패키지가 들어온 경로를 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.