npm, yarn, pnpm은 모두 패키지 매니저이다. 그렇다면 package manager는 뭘까?
❓ 패키지 매니저란
Package Manager
개발에 필요한 다양한 패키지를 설치, 업데이트, 수정, 삭제하는 작업을 편리하고 안전하게 수행할 수 있도록 도와주는 도구다.
Javascript 로프로젝트를 진행하다 보면 필요한 다양한 패키지들이 있고 이 패키지들을 설치하고 또 관리해야 하는 경우가 있는데, 이 패키지들을 의존성 있게 관리해 주는 것이 바로 패키지 매니저다.
즉, 패키지 매니저는 프로젝트에 사용되는 패키지를 쉽게 관리하고 설치해 주는 하나의 도구!
패키지 매니저 3대장
사실상, 모든 패키지 매니지의 기능은 거의 동일하다. 그래서 설치 속도나 스토리지 사용량, 기존 워크플로와 결합되는 방식 등 기능 외적인 요구 사항을 기준으로 사용할 패키지 매니저를 결정한다.
물론 각 패키지 매니저를 사용하는 방법은 다르지만 모두 중요한 컨셉은 공유한다. 이러한 패키지 매니저로 다음을 수행할 수 있다.
- 메타데이터 처리 및 쓰기
- 모든 의존성을 일괄(Batch) 설치 또는 업데이트
- 의존성 추가, 업데이트 및 제거
- 스크립트 실행
- 패키지 배포(publish)
- 보안 감사(audit) 수행
다음 대표 3가지 패키지 매니저에 대해 더 자세히 알아보자.
선구자 npm
Javascript 패키지 매니저의 역사는 npm으로부터 시작한다.
npm은 node와 'pkgmakeinst'라는 bash 유틸리티의 합성어로, 기존에 프로젝트 의존성을 수동으로 다운로드해야 했던 불편함을 혁신적으로 개선한 패키지 매니저의 시초다.
node.js 내부에 내장되어 있어 추가적인 설치 작업이 필요하지 않고, 가장 오래된 패키지인 만큼 생태계가 풍부하다는 장점이 있다.
페이스북의 yarn
yarn은 2017년 페이스북 및 구글 개발자들이 함께 내놓은 패키지 매니저다. 대부분의 개념과 프로세스가 npm을 기반으로 하고 있지만, npm의 큰 취약점이던 보안 문제를 해결한다는 장점이 있다.
여러 개의 패키지를 순차적으로 가 아닌 병렬적으로 설치해 주어 속도나 안정성도 개선되었다고 한다. 현재는 yarn berry라는 버전에서 개발과 개선이 이루어지고 있다.
빠르고 디스크 효율성이 뛰어난 pnpm
pnpm은 개발자 Zoltan Kochan이 2017년 내놓은 패키지 매니저이다. 이름은 'performant npm(효율적인 npm)'의 약자로 pnpm의 장점은 이름처럼 '효율성'이다.
프로젝트의 node_modules 내부에 매번 패키지를 설치했던 기존 매니저들과 달리, pnpm은 글로벌 저장소에 패키지를 물리적으로 한 번만 저장하여 디스크 공간을 절약하고, 향상된 성능을 보인다는 장점이 있다.
그렇다면 어떤 걸 선택해야 할까?
인기 있는 프로젝트가 선택한 패키지 매니저
인기 있는 오픈 프로젝트들은 어떤 패키지 매니저를 사용했지 알아보자
많은 개발자들이 npm, yarn, pnpm 모두 사용해도 좋을 만큼 안정적인 상태에 있다고 평가한다.
그동안은 npm의 보안 문제를 해결한 yarn이 좋은 대안으로 평가됐지만, npm도 성능과 보안 문제를 꾸준히 해결해 왔기 때문에 둘 간의 차이가 크지 않게 됐다. 프로젝트마다 다양한 패키지 매니저를 사용해 보고, 성능, 설치 방식 등을 직접 비교해 결정해 보자
'개발 > javascript' 카테고리의 다른 글
Webpack이란? (0) | 2024.03.28 |
---|---|
Defer와 Async의 차이점 (0) | 2024.02.28 |