sanguk.dev
작성완료
pnpm 기초

pnpm 기초

pnpm은 고성능 패키지 매니저로, 저장 공간 절약과 빠른 설치 속도가 특징이다. NodeJS 14 이상에서 사용 가능하며, npm과의 높은 호환성을 유지한다. 주요 명령어로는 패키지 설치, 제거, 업데이트 등이 있으며, 모노레포 환경에서 효율적으로 작동한다. 심볼릭 링크 기반 구조를 사용하여 디스크 사용량을 줄이고, 캐싱 구조 덕분에 설치 속도가 매우 빠르다.

PNPM

PNPM 정의

pnpm은 Performant NPM의 약자로, NodeJS 환경에서 사용되는 고성능 패키지 매니저이다.
기존의 npm, yarn과 동일한 목적을 가지지만, 저장 공간 절약과 빠른 설치 속도가 특징이다.

특징

  • 하드 링크 (hard link)를 이용한 패키지 저장 구조를 가지고 있다.
  • 동일한 패키지를 중복으로 다운로드하지 않는다.
  • 모노레포 (Monorepo) 환경에 최적화 되어 있다.
  • npm 및 yarn과 높은 호환성을 유지한다.

설치 방법

조건

  • NodeJS 14 버전 이상
  • npm 사용 가능

설치 명령어

shell
npm install -g pnpm

설치 확인 (버전 확인)

shell
pnpm -v

기본 사용법

프로젝트 초기화

shell
pnpm init

패키지 설치

shell
npm install# 전체 의존성 설치
pnpm add react# 패키지 추가
pnpm add -D typescript# devDependencies로 추가
pnpm remove react# 패키지 제거

실행 명령

shell
pnpm run build# npm script 실행
pnpm dev# script 이름 그대로 실행 가능

주요 명령어 요약

명령어설명
pnpm install의존성 설치 (기존 package.json 기준)
pnpm add <pkg>새 패키지 설치
pnpm add -D <pkg>개발용 의존성 설치
pnpm remove <pkg>패키지 제거
pnpm update패키지 업데이트
pnpm list설치된 패키지 목록 출력
pnpm run <script>정의된 npm 스크립트 실행
pnpm dlx <pkg>npx처럼 실행 후 자동 삭제

pnpm과 모노레포(Monorepo)

pnpm은 workspace 기능을 제공하여, 다수의 프로젝트를 하나의 저장소로 관리할 때도 효율적으로 동작한다.

예시 pnpm-workspace.yaml

yaml
packages:
  - 'packages/*'
  - 'apps/*'

모노레포 구조를 고려한 성능 최적화가 잘 되어 있어, 기업에서도 많이 채택하는 방식이다.


node_modules의 차별화

pnpm은 기존의 플랫(flat) node_modules 대신, 심볼릭 링크 기반 구조를 사용한다.

  • 모든 패키지는 전역 저장소에 캐시된다.
  • 프로젝트에는 필요한 패키지들만 링크되어 공간과 속도를 모두 절약한다.

요약

항목pnpm 특징
설치 속도매우 빠름 (캐싱 구조 덕분)
디스크 사용량낮음 (중복 저장 없음)
호환성npm/yarn과 대부분 호환
주요 대상모노레포, 대규모 프로젝트

참고 링크

  • 공식 홈페이지: https://pnpm.io
  • GitHub 저장소: https://github.com/pnpm/pnpm
  • 모노레포 가이드: https://pnpm.io/monorepo