패키지 매니저

white noise·2025년 6월 29일

난 패키지 매니저가 어떤 건지도 몰랐다.. 그냥 사용하라고 해서 사용했었기에 이번 기회에 알아봤다.

패키지 매니저란?

필요한 라이브러리(패키지)를 쉽게 설치하고 버전을 관리해주는 도구이다.

프로젝트를 진행하다 보면 프로젝트에 필요한 다양한 패키지들이 있는데, 이것들을 설치하고 관리해주는 것이 패키지 매니저(Package Manager)이다.

많은 패키지들은 다른 패키지가 설치되어 있어야 제대로 작동하는데, 이 때 필요한 다른 패키지를 dependency라고 한다.
-> dependecy를 설치하고 dependency의 dependency를 설치하고... 이를 수동으로 하기 어렵기 때문에 패키지 매니저를 통해 쉽게 설치할 수 있다.

패키지 매니저들은 아래와 같은 기본적인 기능을 제공한다.

  • metadata 작성 및 관리
  • dependencies 설치, 업데이트, 삭제
  • 스크립트 실행
  • 보안 검사
  • 여러 패키지를 기능에 따라 그룹으로 묶어 정리

패키지 매니저는 대표적으로 3가지가 존재하고, 이 3가지를 가장 많이 사용한다고 한다. 이 3가지는 npm, yarn, pnpm이다.

npm

최초의 패키지 매니저이다.

위에서 말했듯 의존성(dependency)를 수동으로 다운로드해야 했던 불편함을 개선했다.

장점

  • node.js에 내장되어 있어 추가적인 설치가 필요하지 않다.
  • 의존성을 node_modules라 불리는 폴더에 설치한다
  • 사용자들이 만들어 놓은 다양한 모듈이 있다

단점

  • node_modules 폴더 크기가 커지면 불필요 프로젝트를 삭제할 때마다 시간이 오래 걸린다
  • 패키지들을 서로 의존하도록 해서 하나의 문제가 발생하면 다른 것들에도 문제가 발생할 수 있다

yarn

npm이 가지고 있던 일관성, 보안, 성능 문제 등을 해결하기 위해 만들어진 패키지 매니저이다.

npm은 보안의 문제가 큰 단점이어서 yarn은 보안 문제를 해결했다는 장점이 있다. 또한 패키지를 병렬적으로 설치해서 속도 측면에서도 장점이 있다고 한다.

장점

  • npm의 보안 문제를 해결했다
  • 여러 개의 패키지를 병렬저긍로 설치해서 속도가 빠르다

단점

  • yarn.lock 파일의 버전관리로 인해 기존 모듈이 최신화로 업데이트 될 수 있으며, 하위 호환을 보장하지 않는 모듈의 경우 에러가 날 수 있다.
  • 최근 버전의 npm은 성능이 개선되어 속도가 크게 차이 나지 않을 수 있다.
  • npm보다 다운로드로 인한 디스크 공간을 더 많이 차지할 수 있다.
  • 더 많은 메모리를 사용할 수 있다.

pnpm

performant npm의 약자이며, 효율적인 npm이라는 의미로 효율성이 장점인 패키지 매니저이다.

node_modules에 매번 패키지를 설체했던 것과 달리 global 저장소에 패키지를 한 번만 저장함으로써 저장 공간을 절약할 수 있다는 장점을 가지고 있다.
모든 버전의 의존성은 물리적으로 한번만 저장되기 때문에 디스크 공간을 절약할 수 있다.

장점

  • 다른 패키지 매니저에 비해 빠르다
  • global 저장소에 패키지를 한 번만 저장함으로써 저장 공간을 절약할 수 있다.
  • npm을 사용했던 개발자들이 쉽게 적용할 수 있다.

단점

  • 특정 패키지를 한 번만 설치하기 때문에 프로젝트별로 연결을 해놓으면 호환 문제가 발생할 수 있다.

마무리

  • npm은 여전히 표준처럼 사용이 되고
  • yarn은 대규모 프로젝트에서 사용되곤 한다
  • pnpm은 의존성의 문제를 해결하거나 속도, 디스크 효율성에서 강점을 보인다고 한다
profile
Hello World

3개의 댓글

comment-user-thumbnail
2025년 7월 20일

yarn classic과 yarn berry에 대해서도 궁금해요.

답글 달기
comment-user-thumbnail
2025년 7월 27일

3개 다 사용해봤는데 저한테는 역시 자주 사용하는 npm이 제일 편했어요. yarn은 과제하면서 오류가 발생하고 결국엔 다 날아간 기억이 있어서 사용하기 싫어졌어요...ㅋㅋㅋㅋㅋㅋ

답글 달기
comment-user-thumbnail
2025년 7월 28일

TMI: 전 pnpm 사용하고 있어용

답글 달기