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
에 비해 큰 장점으로, 대규모 프로젝트나 여러 프로젝트를 관리할 때 매우 유용합니다.
'TIL' 카테고리의 다른 글
[241220 TIL] 기본적인 husky 세팅 (1) | 2024.12.20 |
---|---|
[241219 TIL] Severless (0) | 2024.12.19 |
[241219 TIL] Framer-motion 기초 (0) | 2024.12.19 |
[241209 TIL] AWS - RDS, EB 에 nest 배포(3) (0) | 2024.12.09 |
[241209 TIL] AWS - RDS, EB 에 nest 배포(2) (0) | 2024.12.09 |