Fast, disk space efficient package manager | pnpm
빠르고, 효율적인 패키지 매니저
- 빠름 - pnpm 은 다른 대안들에 비해 최대 2배 빠릅니다
- 효율적 - node_modules 내부의 파일은 콘텐츠 주소 지정이 가능한 단일 스토리지에서 복제되거나 하드 링크됩니다.
- 모노레포 지원 - pnpm 은 리포지토리 하나에 여러 패키지가 있는 형태를 기본 지원합니다.
- 엄격함 - pnpm 은 평탄하지 않은 node_modules 가 기본이어서, 아무 패키지에나 접근하는 코드가 허용되지 않습니다.
동기
디스크 공간 절약
npm 을 사용할 때 의존성을 사용하는 프로젝트가 100개 있는 경우, 해당 의존성의 사본 100개가 디스크에 저장됩니다. pnpm 을 사용하면 의존성이 content-addressable 저장소 에 저장되므로, 다음을 따릅니다.
- 다른 버전의 의존성에 여러분이 의존하는 경우, 다른 파일만이 저장소에 추가됩니다. 예를 들어, 100개의 파일이 있고 새 버전이 해당 파일 중 하나만 변경되면,
pnpm update
는 단일 항목의 변경에 대해 전체 파일이 복제되는 대신, 저장소에 1개의 새로운 파일만 추가합니다.
- 모든 파일은 디스크 상에서 단일 위치에 저장됩니다. 패키지가 설치될 때 그 파일들은 단일 위치에서 하드 링크되며 추가적인 디스크 공간을 소비하지 않습니다. 이를 통해 프로젝트 간에 동일한 버전의 의존성을 공유할 수 있습니다.
결과적으로, 여러분의 디스크 공간은 프로젝트와 의존성의 수에 비례하여 더 많이 절약되고 더 빠르게 설치할 수 있습니다!
설치 속도 향상
pnpm 은 3단계로 설치가 진행됩니다:
- 의존성 해석. 필요한 모든 의존성을 식별하여 스토어로 가져옵니다.
- 디렉토리 구조 계산. 의존성을 기반으로
node_modules
디렉토리 구조가 계산됩니다.
- 의존성 연결. 나머지 모든 의존성을 가져와서 스토어에서
node_modules
로 하드 링크합니다.
이 접근 방식은 모든 의존성을 확인하고, 가져오고, node_modules
에 쓰는 기존의 3단계 설치 프로세스보다 훨씬 빠릅니다.