Skip to content

Latest commit

 

History

History
67 lines (52 loc) · 3.32 KB

이혜원.md

File metadata and controls

67 lines (52 loc) · 3.32 KB

패키지 매니저

  • 프로젝트 종속성(패키지)을 관리하는 시스템
  • 패키지 설치 및 제거를 원활하게 처리
  • 파일 시스템에서 패키지가 저장되는 위치 관리
  • 패키지가 중복 설치되지 않도록 처리
  • 자신만의 패키지 게시 가능
  • 패키지에 보안 취약점이 있는지 확인 가능
  • 패키지의 버전 관리에 용이
  • 글로벌 (-g or --global or global 등) 옵션을 지정하여 전역으로 설치할 수도 있음
  • 개발 용도로만 쓰이는 패키지는 --save-dev or -D or --dev 등의 옵션을 주어 빌드에 포함되지 않게 할 수 있음

npm

  • 최초의 패키지 매니저
  • Node.js에 기본으로 내장되어 있음
  • 패키지의 데이터를 가진 package.json, 패키지들을 설치하는 폴더인 node_modules 등의 개념들을 최초로 도입
  • 패키지 설치 시 순서대로 설치하기 때문에 중복되는 의존성이 생길 수 있음 -> 유령 의존성

yarn

  • npm의 보안 취약점과 속도를 개선한 패키지 매니저
  • 패키지를 병렬적으로 설치

yarn classic

  • 1.x 까지의 버전 (레거시)
  • 여전히 node_modules를 사용하여 유령 의존성 문제는 해결되지 않았음

yarn berry

  • 2.x 이후의 버전
  • 패키지를 압축 파일 (.zip)로 저장하여 node_modules를 사용하지 않는 PnP (Plug n Play) 기능 제공 -> 속도 및 용량 개선
  • yarn install을 실행하지 않고도 패키지를 사용할 수 있는 Zero Install 기능 제공 -> 패키지를 git 등으로 관리할 수 있음
  • workspace 기능 제공 -> 모노레포에 적합

pnpm

  • npm의 대체품으로 만들어졌기 때문에 npm으로 관리하는 프로젝트는 바로 pnpm으로 전환 가능
  • 여러 개의 node_modules를 만들지 않고, 전역 저장소에 한 번만 설치 후 필요한 곳에서 심볼릭 링크로 연결 -> 모노레포에 적합
  • 의존성 트리의 깊이를 줄이는 방식으로 성능 개선
기능 pnpm yarn npm
워크스페이스 지원 ✔️ ✔️ ✔️
격리된 node_modules ✔️ - 기본값 ✔️ ✔️
호이스팅된 node_modules ✔️ ✔️ ✔️ - 기본값
피어 자동 설치 ✔️ ✔️
Plug'n'Play ✔️ ✔️ - 기본값
Zero-Installs ✔️
의존성 패치 ✔️ ✔️
Node.js 버전 관리 ✔️
lockfile 보유 ✔️ - pnpm-lock.yaml ✔️ - yarn.lock ✔️ - package-lock.json
재정의 지원 ✔️ ✔️ - resolution을 통해 ✔️
Content-addressable 저장소 ✔️
동적 패키지 실행 ✔️ - pnpm dlx를 통해 ✔️ - yarn dlx를 통해 ✔️ - npx를 통해
부작용 캐시 ✔️
Listing licenses ✔️ - Via pnpm licenses list ✔️ - Via a plugin

참고 사이트