TechFeedTechFeed
툴링난이도 쉬움30분~1시간

npm에서 pnpm으로 마이그레이션

npmpnpm
요약: pnpm import로 기존 lock을 변환한 뒤 node_modules를 재설치하면 디스크 절약과 설치 속도 향상을 얻습니다. CI와 모노레포에서 특히 유리합니다.

왜 옮기나

  • pnpm은 콘텐츠 주소 저장소로 패키지를 하드링크해 디스크와 설치 시간을 크게 절약합니다.
  • 엄격한 의존성 격리로 유령 의존성(phantom dependency) 문제를 막습니다.
  • 내장 workspace로 모노레포 관리가 깔끔합니다.

전제 — 현재 상태

npm + package-lock.json 사용.

마이그레이션 단계

1
pnpm 설치

corepack으로 활성화하거나 전역 설치합니다.

corepack enable pnpm
# 또는: npm install -g pnpm
2
lock 변환

pnpm import가 package-lock.json을 읽어 pnpm-lock.yaml로 버전을 보존 변환합니다.

pnpm import
3
재설치

기존 node_modules와 npm lock을 지우고 pnpm으로 설치합니다.

rm -rf node_modules package-lock.json
pnpm install
4
CI·스크립트 교체

CI 캐시 키와 install 명령을 pnpm으로 바꾸고, npm run을 pnpm으로 교체합니다.

pnpm install --frozen-lockfile
pnpm run build

⚠️ 막히는 케이스 · 함정

  • 엄격 격리 때문에 유령 의존성에 의존하던 코드가 깨질 수 있습니다 — 빠진 패키지를 dependencies에 명시하세요.
  • 일부 도구가 평면 node_modules를 가정하면 .npmrc의 node-linker=hoisted가 필요할 수 있습니다.
  • Vercel 등 배포 플랫폼은 pnpm-lock.yaml을 감지하면 자동으로 pnpm을 씁니다.
✅ 검증: pnpm install 후 빌드·테스트·dev가 모두 통과하는지, CI가 frozen-lockfile로 재현되는지 확인합니다.
pnpmnpm패키지매니저모노레포corepack

관련 가이드

pnpm vs npm vs Yarn Berry 2026 — JavaScript 패키지 매니저 속도·디스크·워크스페이스 실전 비교OpenAI Codex의 Astral 인수 — Ruff·uv·ty와 Python 개발 도구 생태계 재편Claude Code 소스코드 유출 사건 — npm 소스맵 실수로 51만 줄 노출, 공급망 보안까지 흔들렸다오픈소스 릴리즈 체크리스트 — npm·PyPI·GitHub 배포 전 놓치면 후회하는 38개 항목