카테고리 없음

패키지 매니저 비교(NPM / PNPM / Yarn)

학습하는 청년 2024. 12. 14. 01:28

최종 수정 : 2024.12.14

패키지 매니저 비교(NPM / PNPM / Yarn)

포트폴리오용 프로젝트 생성에 앞서 새로운 패키지매니저를 사용해보고 싶었다. 간단한 프로젝트나 부트캠프 당시에도 npm만 사용했기에 다른 것을 살펴보고 싶었다. 또한, NPM이 익숙하다고 느껴서 계속 벗어나지 못하는 것 같아 이번에는 공부도 할겸 정리해 보고 싶었다.

 

요즘은 새로운 패키지 매니저 burn도 나왔다고 하는데, 아직 비교적 사용자들이 적어 개발을 익혀가는 과정에서는 다음에 하는 게 낫겠다는 판단이 들어 배제했다. 대표적인 패키지 매니저 NPM, PNPM, Yarn을 비교 정리하면서 얼핏 알고 있던 것도 다시금 확인할 수 있어서 좋았다.

 

최근 Yarn이 2.0 버전이 나오면서 기존 Yarn은 유지보수만 하게 됐다. 따라서, 장기적인 관점에서 Yarn( ≠ Yarn Barry)을 권하지는 않는다. 

 

상세 비교표

특징 NPM PNPM Yarn
설치 방법 Node.js와 함께 기본 제공 npm install -g pnpm npm install -g yarn
설치 속도 가장 느림 가장 빠름 중간
디스크 사용량 높음(중복 설치) 매우 낮음(하드링크 사용) 중간
node_modules 구조 중첩 구조 평탄화된 구조 + 심볼릭 링크 평탄화된 구조
병렬 설치 부분 지원 완벽 지원 완벽 지원
오프라인 캐시 제한적 지원 완벽 지원 완벽 지원
Lock 파일 package-lock.json pnpm-lock.yaml yarn.lock
Monorepo 지원 제한적 (wordspaces) 뛰어남 좋음 (workspaces)
유령 의존성 발생 가능 방지됨 발생 가능
시장 점유율 가장 높음 성장 중 높음
학습 곡선 낮음 중간 중간
보안성 기본 향상됨 향상됨
커뮤니티 크기 매우 큼 성장 중

 

상세 설명

NPM (Node Package Manager)

장점

  • Node.js의 기본 패키지 매니저로 별도 설치 불필요
  • 가장 큰 커뮤니티와 풍부한 문서
  • 초보자가 시작하기 쉬움
  • 대부분의 튜토리얼이 NPM 기준으로 작성됨

단점

  • 상대적으로 느린 설치 속도
  • 비효율적인 디스크 공간 사용
  • 의존성 해결이 때때로 일관적이지 않음
  • 보안취약점에 더 노출될 수 있음

 

PNPM (Performant NPM)

장점

  • 획기적인 빠른 설치 속도
  • 디스크 공간을 효율적으로 사용 (하드링크 활용)
  • 엄격한 의존성 관리로 유정 의존성 방지
  • 뛰어난 모노레포 지원
  • 보안성이 향상된 패키지 관리

단점

  • 비교적 새로운 도구라 참고자료가 적음
  • NPM과 Yarn에 비해 적은 커뮤니티
  • 일부 레거시 패키지와의 호환성 문제 가능성
  • 학습곡선이 약간 높음

 

Yarn (Yet Another Resourse Nagotiator)

장점

  • NPM 보다 빠른 설치 속도
  • 병렬 다운로드 지원
  • 향상된 보안 기능 (체크섬 검증)
  • 안정적인 의존성 관리
  • 풍부한 기능과 플러그인 시스템

단점

  • 별도 설치 필요
  • 가끔 NPM과의 호환성 문제 발생
  • 디스크 공간 사용이 NPM과 비슷
  • 설정이 다소 복잡할 수 있음

 

주요 명령어 비교

작업 NPM PNPM Yarn
패키지 설치 npm install pnpm install yarn
패키지 추가 npm install [pkg] pnpm add [pkg] yarn add [pkg]
개발 의존성 추가 npm install --save-dev [pkg] pnpm add -D [pkg] yarn add --dev [pkg]
전역 설치 npm install -g [pkg] pnpm add -g [pkg] yarn global add [pkg]
스크립트 실행 npm run [script] pnpm [script] yarn [script]
캐시 정리 npm cache clean pnpm store prune yarn cache clean
의존성 업데이트 npm update pnpm update yarn upgrade
잠금 파일 업데이트 npm install pnpm install --force yarn install --force

 

프로젝트 유형별 추천

소규모 프로젝트

  • NPM이나 Yarn 추천
  • 간단한 설정과 친숙한 환경

 

대규모/엔터프라이즈 프로젝트

  • PNPM 강력추천
  • 디스크 공간 졸약과 빠른 설치 속도가 중요

 

모노레포 프로젝트

  • PNPM이나 Yarn Berry 추천
  • 우수한 workspace 관리

 

레거시 프로젝트

  • NPM 이나 Yarn Classic 추천
  • 호환성 문제 최소화