pnpm
pnpm은 기존의 방식을 해치지 않고, 빠르고 효율적인 방식을 사용
모노레포를 지원, 엄격한 의존성 해석을 통해 의도하지 않게 사용되는 경우를 피함
여러가지 장점으로 인해 모노레포를 운영할 수 있는 좋은 패키지매니저로 부상중
turborepo 공식문서에서도 권고함
pnpm
빠르고 효율적인 패키지매니저
모노레포를 지원,
평탄하지 않은
node_modules
가 기본이기 때문에 엄격한 의존성 관리가 가능시스템 내 단일 패키지 스토어에 모든 의존성을 보관하기에 디스크 절약
필요한 의존성을 식별하여 스토어로 가져오고, 디렉토리 구조를 계산하여 하드링크하는 과정을 가지기 때문에 설치속도 빠름
프로젝트에 의존성이 설치될 때 다른 패키지에 사용되는 똑같은 의존성일 경우(===스토어에 존재하는) 하드링크 방식으로 가져옴 (즉, 추가로 설치하지 않음)
스토어에 존재하지 않는 의존성들만 새로 설치함
기본적으로 pnpm은 symlink를 이용하여 프로젝트의 직접적인 의존성만을 모듈 디렉토리의 루트로 추가함
해당 프로젝트에서만 사용하는 의존성들은 루트 워크스페이스에 관리되지 않고 내부적으로 관리하기 때문에 팬텀 디펜던시를 방지하게됨
실습
Symlink
pnpm이 의존성 용량을 아끼는 방법
node_modules/.pnpm/
을 Virtual Store라고 부른다..pnpm 하위로 추가된 패키지들은 실제로 해당 위치에 설치된것이 아닌 다른 저장소에 hard link 방식으로 복사되어있는것
hard link가 된것은 각각 용량을 차지하는것이 아닌 중앙 스토어에만 용량을 차지하게 됨?? -> 아이노드 방식?
여러군데에서 사용(설치) 하더라도 한 곳의 용량만 사용하기 때문에 디스크 용량을 많이 줄일수있는 기법
pnpm Virtual Store
Last updated