
새로운 팀프로젝트를 들어가면서 pnpm으로 작업하자는 얘기가 나왔다. 그동안 npm, npx, yarn만 사용해봤던지라 pnpm은 이번에 처음 듣게 되어서 어떻게 설치하고, 사용하면 될지 찾아보고, 잊지 않기 위해 정리하려 한다.
: Performant Node Package Manager.
2016년 npm과 yarn의 단점을 보완하기 위해 만들어진 패키지 관리자라고 한다. yarn처럼 패키지를 캐싱하여 빠르게 설치할 수 있고, npm과 비슷한 구조를 가지고 있어 호환성이 높다고한다.
또한 패키지도 병렬로 설치되어 모든 패키지를 한꺼번에 설치한 후, 의존성 트리와 같은 형태로 링크만 걸어주기 때문에 설치 프로세스가 굉장히 빠르다. 그리고 npm/yarn과 비교했을때 패키지가 중복으로 저장되지 않는다. 프로젝트에서 중복으로 설치되는 패키지는 캐싱하여 디스크 용량을 절약하고, 빌드 시간을 단축시킨다.
예를 들어, sample_1, sample_2, sample_n 프로젝트들이 있을 때, 각 프로젝트가 package_1을 포함할 때, package_1의 크기가 2MB라고 할때, npm의 경우에는 각 프로젝트가 pckage_1을 포함해 총 6MB의 디스크를 차지한다.

그러나 pnmp을 사용했을 경우, .pnpm_store이라는 저장소가 있고, 각 프로젝트에서 package_1에 대한 바로가기를 만든다.(의존성 트리에서 링크를 걸어준다는게 이 내용!-> 심볼릭링크를 걸어준다고 한다.) 이렇게 하면 원본과 바로가기에 대한 저장공간만 사용하면 되어서 (2MB * 2) 4MB 크기 만큼 저장공간을 효율화 할 수 있다. 이는 프로젝트가 많아지면 많아질수록 더욱 효과가 커진다.

그러나 반대로 단점도 있는데, 일부 라이브러리와의 호환성 문제와 플러그인 통합문제가 있을 수 있다고 한다. 이밖에도 사용사수가 상대적으로 더 적어서 생태계가 부족할 수 있고, 처음 설치했을 때는 npm보다는 느리다고 한다.(처음 설치 이후에는 npm보다 빠름)
참고 자료
https://lasbe.tistory.com/200
https://devscb.tistory.com/135
https://dev-blackcat.tistory.com/44