pnpm은 node_modules를 효율적으로 관리하여 디스크 용량을 절약합니다.
이는 pnpm의 핵심 아키텍처인 "symlinked node_modules" 덕분입니다.
pnpm의 동작 방식
- 글로벌 스토리지 사용 (pnpm store)
- pnpm은 모든 패키지를 한 번 다운로드한 뒤, 전역 스토리지(예:
~/.pnpm-store)에 저장합니다. - 이 스토리지는 압축된 캐시 파일 형태로 유지되며, 여러 프로젝트가 동일한 의존성을 공유하도록 설계되었습니다.
- pnpm은 모든 패키지를 한 번 다운로드한 뒤, 전역 스토리지(예:
node_modules는 심볼릭 링크로 구성- 프로젝트의
node_modules에는 실제 파일이 아니라, pnpm store의 실제 패키지 파일을 가리키는 심볼릭 링크(Symlink)가 생성됩니다. - 이 방식 덕분에 실제 파일의 복사본이 아니라 참조만 포함되므로, 디스크 용량이 크게 절약됩니다.
- 프로젝트의
디스크 용량 절약 효과
- 동일한 버전의 패키지를 여러 프로젝트에서 사용할 때, 패키지 파일은 한 번만 저장되고 모든 프로젝트가 이를 참조합니다.
- 일반적인
npm이나yarn에서 각 프로젝트별로 의존성이 복사되는 것과 비교했을 때, pnpm은 디스크 사용량을 획기적으로 줄이는 효과가 있습니다.
예시 비교 (pnpm vs npm)
예를 들어, 두 프로젝트가 동일한 패키지 버전(lodash@4.17.21)을 사용한다고 가정할 때:
- npm
- 각 프로젝트의
node_modules에 독립적으로 패키지 파일이 복사됨. lodash@4.17.21의 파일이 두 번 저장되므로, 디스크 용량을 더 많이 차지함.
- 각 프로젝트의
- pnpm
lodash@4.17.21은 전역 스토리지(~/.pnpm-store)에 한 번만 저장됨.- 각 프로젝트의
node_modules는 해당 전역 스토리지의 파일을 가리키는 심볼릭 링크만 포함. - 따라서, 디스크 용량은 최소화되고, 패키지 관리는 효율적.
확인 방법
- pnpm store의 위치 확인이 명령어로 전역 스토리지의 위치를 확인할 수 있습니다.
pnpm store path- 스토리지 사용량 확인
전역 스토리지(~/.pnpm-store)와 프로젝트의node_modules디렉토리의 용량을 비교하면, pnpm이 디스크 용량을 절약하는 것을 직접 확인할 수 있습니다.
결론
pnpm i로 생성된 node_modules는 참조용으로 구성되며, 실제 패키지 파일은 글로벌 스토리지에 저장되므로 디스크 용량을 적게 차지합니다. 이는 pnpm이 npm이나 yarn에 비해 큰 장점으로, 대규모 프로젝트나 여러 프로젝트를 관리할 때 매우 유용합니다.
'etc' 카테고리의 다른 글
| 개인 vscode 설정 업데이트 (1) | 2025.03.01 |
|---|---|
| [250225 TIL] n8n 이란?(GPT질의) (0) | 2025.02.25 |
| 개인 vscode 설정 (0) | 2024.11.13 |
| [241031 TIL] pnpm lock 자꾸 변경될 때 (0) | 2024.10.31 |
| [241024 TIL] CI/CD 정리 (0) | 2024.10.24 |