[개발환경] npm vs pnpm 차이 ? (ft. 범부)

npm , pnpm

  • 패키지 설치 및 의존성 관리 툴 (node , react, next, 이외의 라이브러리, 프레임워크 등등..) 로 쓰이는 기술
    설치 : npm install 라이브러리명 , pnpm install 라이브러리명 이런식으로 사용
    업데이트 : npm install , pnpm install 형태

npm 단점 (pnpm이 나오게 된 이유)

  1. 프로젝트마다 같은 패키지가 중복 설치됨
  2. node_modules 가 너무 무거움 + 패키지 중복 다운로드
  3. node_modules 내부 레벨이 너무 많음 (타고 들어가는 폴더가 많음)

pnpm

  • 하드 링크 기반의 저장소 (즉, 하나만 설치하고 다른 프로젝트는 링크로 연결만 함)
  • npm 에서 쓰던 명령어 대부분 호환 가능
  • 설치도 간단함 (npm install pnpm) ;;;
작업 npm 명령어 pnpm 명령어
패키지 설치 npm install pnpm install
패키지 추가 npm install axios pnpm add axios
devDependencies 추가 npm install -D eslint pnpm add -D eslint
패키지 제거 npm uninstall axios pnpm remove axios
전체 업데이트 npm update pnpm update

어떤 경우에 pnpm ?

사실 대부분 pnpm 으로 해도 되지만 강점만 살리면

  • 모노레포(lerna, turborepo 등) 프로젝트
  • 의존성이 많은 프로젝트
  • 속도에 민감한 대규모 개발 환경