pnpm이 npm보다 좋은 점
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: 소프트웨어 개발자, 대규모 프로젝트/모노레포 관리자, 의존성 관리 효율화를 원하는 팀
- 난이도: 중간 (패키지 관리자 기술 및 파일 시스템 개념 이해 필요)
핵심 요약
- 🚀 설치 속도:
pnpm
은 hard link를 사용하여 설치 속도가 빠름 - 📦 node_modules 구조:
pnpm
은 symbolic link/isolated 구조로 중복 의존성 방지 - 🔒 보안 및 의존성 관리:
pnpm
은 package.json에 명시된 의존성만 허용 (엄격한 검증)
섹션별 세부 요약
1. **pnpm vs npm 비교**
- 설치 속도:
pnpm
은 hard link를 사용해 설치 시간이 npm보다 3~5배 빠름 - 공간 효율:
pnpm
은 .pnpm-store를 통해 중복된 의존성 파일을 공유 (npm은 각 프로젝트별 복사) - 의존성 트리:
pnpm
은 symbolic link로 의존성 충돌 방지 (npm은 깊은 경로로 인해 충돌 가능성)
2. **Hard Link vs Symbolic Link**
- Hard Link:
- 데이터 직접 연결 (inode 공유) → 파일 삭제 시 마지막 hard link가 삭제될 때까지 데이터 보존
- 공간 절약 (복사 없이 공유)
- Symbolic Link:
- 경로 지정 (파일/폴더로 연결) → 원본 삭제 시 broken link 발생
- 다른 드라이브/폴더 간 연결 가능
3. **pnpm의 핵심 기능**
- 모노레포 지원:
pnpm workspaces
를 통한 다중 프로젝트 의존성 공유 - 의존성 충돌 방지: package.json에 명시된 패키지만 import 허용
- .pnpm-store 활용: 모든 프로젝트의 의존성을 중앙 저장소에서 공유
4. **pnpm 사용 시 주의사항**
- .lock 파일 호환성:
pnpm-lock.yaml
과package-lock.json
동기화 필요 - 특정 라이브러리 호환성 문제: npm 전용 라이브러리와의 충돌 가능성 있음
결론
- 대규모 프로젝트/모노레포에서는
pnpm
사용이 공간 절약 및 설치 속도 향상에 유리하며, 의존성 충돌 방지 기능이 핵심 장점. - npm 사용자는
pnpm
으로 전환 시 .lock 파일 호환성 확인 필수.