NPM과 패키지 매니저

wltjd1688·2025년 2월 12일

풀사이클

목록 보기
13/74

패키지 매니저란?
외부 라이브러리 및 모듈을 쉽게 관리하고 설치할 수 있도록 도와주는 도구

npm

Node.js를 설치하면 기본으로 제공되는 패키지 매니저
그래서 3개중 가장 많이 사용되고 있다.

특징

  • Node.js와 함께 설치되므로 가장 많이 사용된다.
  • 전 세계 최대의 오픈소스 패키지 레지스토리를 운영중이다.
  • package.json을 이용해 의존성을 관리한다.

장단점

장점

  • 광범위한 생태계
  • npm audit 지원: 보완 취약점 점검기능

단점

  • 의존성 설치 속도가 다른 패키지 매니저보다 상대적으로 느림
  • node_modules 크기가 상당함

패키지 관리 파일

  • package.json: 프로젝트의 메타데이터(프로젝트 이름, 버전, 의존성 목록, 스크립트 등)를 담고 있으며, npm init으로 생성
  • package-lock.json: npm install 시 자동 생성되며, 설치된 모든 의존성의 버전 및 트리 정보를 기록해 환경 일관성을 보장함

Yarn

npm보다 빠른 패키지 설치를 목표로 만든 패키지 매니저

특징

  • 패키지 다운로드 속도가 빠름
  • 병렬 설치 지원(동시에 여러 패키지를 다운로드)
  • yarn.lock 파일을 사용해 패키지 버전 관리

장단점

장점

  • npm보다 빠름
  • 병렬 다운로드
  • 설치된 패키지는 다시 설치하지 않음

단점

  • npm과 차별성이 없음(최근에 npm 속도 개선)
  • 따로 설치해야함

패키지 관리 파일

  • package.json: npm과 동일하게 프로젝트의 기본 정보가 담김
  • yarn.lock: yarn install 시 자동 생성됨, 의존성과 트리 정보를 기록해 팀 활동때 같은 환경을 유지할 수 있도록 함.

PNPM

npm보다 저장공간을 절약하고 성능을 최적화한 패키지 매니저

특징

  • 패키지를 글로벌하게 저장 후, 심볼릭 링크를 사용하여 재사용
  • node_modules 폴더 크기가 줄어들어 공간을 절약함
  • 가장 빠른 패키지 설치 속도를 제공

장단점

장점

  • 가장 빠른 설치 속도
  • 디스크 공간 절약
  • 의존성 충돌 문제 최소화

단점

  • 익숙하지 않은 구조
  • 일부 패키지와 호환성 이슈 발생

패키지 관리 파일

  • package.json: npm과 동일하게 프로젝트의 기본 정보가 담김,
  • pnpm-lock.yaml: pnpm install 시 자동 생성, 의존성과 버전 및 경로 정보를 관리함, yarn과 마찬가지로 팀활동때 동일한 환경을 제공

npm말고 다른걸 쓴다면

개인적으로 pnpm을 사용해보고 싶다. 노트북에 프로젝트를 저장하면서 node_modules 폴더가 예상보다 많은 용량을 차지하는 것을 경험했다. 물론 오래된 패키지와의 호환성 문제가 있을 수 있으나, 강제로 최신 패키지를 사용하게 되면 오래된 패키지로 인해 일어나는 오류도 줄일 수 있어 더 좋은게 아닌가 하고 생각한다.
게다가 pnpm은 설치 속도도 제일 빠르다니 충분히 매력적으로 느껴졌다.

profile
일단 해!!!!

0개의 댓글