pnpm
지난번에 그냥 팀원이 쓰자고 해서 쓴 pnpm. 이번에도 사용하게 되어서 내가 이전에 쓰던 npm 과 뭐가 다른지 공부해 보기 위해 정리를 해봤다. 결론적으로 보면 pnpm 은 전역에 패키지를 저장해서 갔다 쓰고, npm 과 yarn은 각 프로젝트에 패키지를 계속 복사해 두는 방식이다.
pnpm이란
pnpm(performant npm)은 Node.js 패키지를 관리하기 위한 패키지 매니저로, npm이나 Yarn과 유사한 역할을 한다. 하지만 패키지를 설치하는 방식에서 차이가 있으며 디스크 사용량을 줄이고 설치 속도를 개선하는 것을 목표로 한다.
pnpm의 특징
1. 효율적인 디스크 사용 방식
pnpm은 패키지를 프로젝트마다 복사하지 않고 전역 저장소(store)에 한 번만 다운로드한 뒤, 각 프로젝트에서는 하드 링크를 통해 사용한다. 이 방식으로 동일한 패키지가 여러 프로젝트에 설치되어도 디스크 공간을 중복 사용하지 않는다.
2. 빠른 설치 속도
이미 다운로드된 패키지는 전역 저장소에서 바로 연결되기 때문에 새 프로젝트에서도 빠르게 설치할 수 있다.
3. 엄격한 의존성 구조
pnpm은 프로젝트에서 실제로 선언된 의존성만 접근할 수 있도록 node_modules 구조를 관리한다. 이로 인해 의존성 누락 문제를 빠르게 발견할 수 있다.
4. workspace 지원
pnpm은 monorepo 환경을 위한 workspace 기능을 지원하여 여러 패키지를 하나의 저장소에서 관리할 수 있다.
npm, Yarn과의 차이
| 항목 | npm / Yarn | pnpm |
|---|---|---|
| 설치 방식 | 프로젝트마다 패키지 복사 | 전역 store + 하드 링크 |
| 디스크 사용량 | 상대적으로 큼 | 매우 효율적 |
| 의존성 접근 | 비교적 느슨함 | 엄격함 |
| 설치 속도 | 보통 | 빠름 |
pnpm 사용 예시
설치
npm install -g pnpm
패키지 설치
pnpm install
의존성 추가
pnpm add react
개발 의존성 추가
pnpm add -D typescript
pnpm 사용 이유
pnpm은 디스크 공간을 효율적으로 사용하고 설치 속도가 빠르며, 의존성 관리가 엄격해 프로젝트의 안정성을 높일 수 있다. 특히 여러 프로젝트를 동시에 관리하거나 monorepo 환경에서 유용하게 활용된다.