<aside>
목차
</aside>
pnpm: 현대 JavaScript 프로젝트를 위한 필수 선택<aside> 📖
JavaScript 생태계에서 의존성 관리는 프로젝트의 안정성과 개발 효율성을 좌우하는 핵심 요소이다.
특히 Next.js와 같이 복잡하고 규모 있는 프레임워크를 다룰 때, 어떤 패키지 매니저를 선택하는가는 단순한 취향의 문제를 넘어선다.
이러한 맥락에서 pnpm은 기존 npm의 한계를 극복하고 차세대 표준으로 자리 잡을 강력한 대안을 제시한다.
</aside>
<aside> ✏️
pnpm 과 npm의 가장 근본적인 차이는 node_modules 디렉터리를 구성하는 방식에 있다.
</aside>
[ 🤬 문제점 1] 동일한 패키지가 여러 프로젝트에 중복으로 저장
npm은 각 프로젝트마다 의존성 패키지 전체를 복사하여 독립적인 node_modules를 생성한다.
이는 프로젝트 간 의존성 격리를 보장하지만, 동일한 패키지가 여러 프로젝트에 중복으로 저장되어 심각한 디스크 공간 낭비를 초래한다.
[ :ycheck3: 해결 ] 중앙화된 전역 저장소(content-addressable store)에서 관리하여 심볼릭 링크로 접근 허용
반면, pnpm은 **패키지를 중앙화된 전역 저장소(content-addressable store)**에 단 한 번만 저장한다.
그리고 각 프로젝트의 node_modules에는 이 전역 저장소의 실제 파일을가리키는 심볼릭 링크(symbolic link)만을 생성한다.
이 혁신적인 접근 방식은 디스크 사용량을 극적으로 감소시킨다.
여러 프로젝트가 동일한 버전의 Next.js를 사용하더라도, 실제 파일은 단 한 벌만 디스크에 존재하게 된다.
이는 곧바로 설치 속도의 향상으로 이어진다.
이미 전역 저장소에 캐시된 패키지는 다시 다운로드할 필요 없이 링크 생성만으로 설치가 완료되므로, 반복적인 설치 작업에서 압도적인 속도 우위를 점한다.