• 0
  • 2
April 01, 2025

패키지 매니저 pnpm과 Yarn Berry

답변 확인

1. ✅ pnpm

  • pnpm은 성능과 디스크 효율성을 개선한 패키지 매니저로, 기존의 npmyarn에 비해 더 빠르고 효율적으로 패키지를 관리할 수 있도록 돕는 도구
  • 일반적으로, npm이나 yarn은 프로젝트마다 node_modules폴더에 패키지를 복사함
  • pnpm전역 저장소에 패키지를 저장하고, 하드 링크와 심볼릭 링크를 사용하여 패키지를 참조하게함
  • 이를 통해 동일한 패키지를 여러 프로젝트에서 공유할 수 있어 디스크 용량 절약 및 설치 속도 향상이 가능

📌 주요 특징

1. 하드 링크 및 심볼릭 링크 :

  • pnpm은 전역 저장소를 사용하고 하드 링크를 활용하여 디스크 용량을 절약하고 설치 속도를 향상시킴

2. 워크스페이스 기능 :

  • 모노레포 환경에서 여러 패키지 간 의존성을 관리 가능

3. 유령 의존성 문제 해결 :

  • 정확한 의존성 관리로 유령 의존성 방지

2. ✅ Yarn Berry

  • Yarn Berry는 Yarn 2.x버전 이상을 가리키며, 기존의 node_modules폴더 대신 Pnp(Plug'n'Play) 시스템을 사용하여 패키지를 관리
  • .pnp.cjs 파일을 통해 패키지 위치와 의존성 정보를 정확히 관리하며, 이를 통해 패키지를 빠르고 효율적으로 찾을 수 있음
  • Yarn Berry는 또한 Zero Install 기능을 통해 의존성을 **버전 관리 시스템(git)**에 포함시켜, 저장소를 새로 복제하거나 브랜치를 이동할 때 의존성을 다시 설치할 필요가 없게 됨

📌 주요 특징

1. Pnp(Plug'n'Play):

  • PnP(Plug'n'Play) 방식으로 .pnp.cjs 파일을 사용해 의존성을 효율적으로 관리

2. Zero Install :

  • 의존성을 버전 관리 시스템에 포함시켜, 저장소 복제 시 의존성 재설치 불필요

3. 패키지 캐시 :

  • 패키지들을 .yarn/cache 디렉토리에서 압축 파일 형태로 관리하여, 저장소 크기를 줄이고 설치 속도를 향상시킴.

✅ 3. pnpm과 Yarn Berry의 차이점

항목 pnpm Yarn Berry
패키지 관리 방식 전역 저장소에 패키지를 저장하고 하드 링크 사용 Pnp(Plug'n'Play) 방식으로 의존성 관리
디스크 사용 효율성 하드 링크를 사용하여 디스크 공간 절약 .yarn/cache로 패키지 캐시를 관리하여 효율적
의존성 관리 정확한 의존성 관리 및 유령 의존성 방지 Zero Install을 통해 의존성 버전 관리
모노레포 지원 워크스페이스 기능 제공 워크스페이스 및 Pnp 기반 의존성 관리 지원

✅ 4. 유령 의존성 문제란?

  • 유령 의존성(ghost dependency) 은 실제로 사용되지 않는 의존성이 코드에 포함되어 설치되는 문제. 디스크 공간을 차지하고 성능 저하를 초래함

해결법

  • pnpm: 전역 저장소와 하드 링크를 사용하여 유령 의존성을 방지.

  • Yarn Berry: PnP 방식을 통해 필요한 의존성만 로드하도록 관리.

✅ 5. pnpm과 Yarn Berry의 단점

pnpm 단점

  • 호환성 문제: 일부 패키지와 호환되지 않음

  • 설정이 복잡할 수 있음

Yarn Berry 단점

  • 러닝 커브: PnP 방식에 대한 이해와 설정이 필요.

  • 일부 도구와의 호환성 문제.

🔹 결론

  • pnpm은 빠른 설치 속도와 디스크 공간 절약을 제공하며, 특히 모노레포 환경 에서 강력한 성능을 보임.
  • Yarn Berry는 Pnp(Plug'n'Play) 를 통해 의존성 관리의 정확도를 높이고, Zero Install을 통해 효율적인 의존성 관리를 지원
  • 유령 의존성은 불필요한 패키지가 설치되어 성능과 유지보수에 문제가 생기는 현상으로, pnpm과 Yarn Berry는 이를 효율적인 의존성 관리 방식으로 해결함

📚 참고 자료

Top comments (2)

  • DavidYang2월 19일

    우와 댓글이다~

  • Olivia2월 19일

    오오 ~~ :) 너무 글 좋네용