패키지 매니저 비교 - npm, yarn, pnpm

sebinnnnn·2023년 6월 24일
8
post-thumbnail

👉🏻 Package Manager?

패키지 매니저는 개발에 필요한 다양한 패키지를 설치하고 또 수정하고 업데이트하는 등의 작업을 편리하게 도와주는 도구라고 할 수 있다.

자바스크립트로 프로젝트를 진행하다 보면 해당 프로젝트에 필요한 다양한 패키지들이 있고 이 패키지들을 설치하고 또 관리해야 하는 경우가 있는데, 이 패키지들을 의존성 있게 관리해 주는 것이 바로 패키지 매니저다.

즉, 패키지 매니저는 프로젝트에 사용되는 패키지를 쉽게 관리하고 설치해주는 하나의 도구와 같다.


✨ Package Manager 3대장

가장 많이 사용되는 패키지 매니저로 3가지가 있는데, 바로 npm, yarn, pnpm이다.

사실, 이것들을 제외하고도 다른 패키지 매니저들이 있겠지만 현재로서 가장 많이 사용되는 것들이기 때문에 이 3가지를 먼저 살펴볼 예정이다.

먼저 이 3가지의 패키지 매니저들에 대해서 어떤 것이 좋고 나쁜지 판단하기보다는 어떤 특징들이 있고 어떤 장점들이 있는지 먼저 살펴본 다음에, 각각의 상황에 따라 사용하기 좋은 패키지 매니저를 살펴볼 예정이다.

따라서, 꼭 이걸 써야겠다!가 아닌, 각각의 특징들을 모두 알아둔 후에 나중에 상황에 따라 골라서 사용하는 것이 좋다.

1️⃣ npm

npm은 패키지 매니저의 시초라고 할 수 있다.
npm의 경우에는 프로젝트의 의존성을 수동으로 다운로드해야 했던 불편함을 개선한 패키지 매니저로 node.js에 내장이 되어 있기 때문에 추가적인 설치가 필요하지 않다. 즉, 별도의 설치가 필요 없다는 것이 npm의 큰 장점이기도 하다.

더불어서, npm에는 직접 개발한 모듈뿐만 아니라 다른 사용자들이 만들어 놓은 다양한 모듈이 있기 때문에 이를 다운로드로 쉽게 사용할 수 있다는 특징이 있다.

npm의 가장 큰 특징이자 단점은, 아무래도 npm이 패키지 매니저의 시초와 같기 때문에 오랜 시간 아주 많은 사용자들이 사용을 해와서 생태계가 굉장히 풍부하다는 점이다.

다만, 앞서 말했듯이 npm의 경우 패키지들을 서로 의존하도록 하기 때문에 만약 하나의 문제가 발생한다면 다른 것들에도 문제가 발생할 수 있다는 단점이 있다. 따라서, 이 부분을 관리하기 위해서는 package.json이 필요하다.

[ 사용 방법 ]

npm init 

해당 명령어를 입력하여 npm을 사용할 수 있는 초기 환경을 설정해 주면 된다.

2️⃣ yarn

yarn은 기존의 npm의 단점을 보완하면서 등장한 패키지 매니저로, 2017년에 페이스북 개발자들과 구글 개발자들이 함께 내놓은 패키지 매니저다.

사실상 npm과 큰 차이점도 없고 프로세스도 거의 동일하지만, 아주 큰 차이점은 보안이다.

npm은 보안의 문제가 큰 단점이었는데 yarn에서는 npm의 취약점이었던 보안 문제를 해결해서 보다 안전성을 보장하고 있다는 아주 큰 장점을 가지고 있다.

더불어서, yarn의 또 다른 장점으로는 빠른 속도다.
여러 개의 패키지를 순차적으로 설치를 하는 것이 아니라 병렬적으로 설치를 해주기 때문에 속도 측면에서도 npm보다 개선된 모습을 보여주고 있다.

이러한 이유로 최근에는 npm보다 yarn을 더 많이 사용하고 있는 추세이고, 실제로 사용하다 보면 yarn의 빠른 속도에 맛 들여서 계속 yarn을 사용할 수밖에 없을 것이다.

추가적으로, yarn berry라는 상위 버전을 통해서 여러 개발과 개선이 이루어지고 있는데 아직까지는 yarn berry보다는 yarn을 더 많이 사용하고 있는 것 같다!

[ 사용 방법 ]

yarn의 경우 npm 과는 달리 별도의 설치가 필요하기 때문에 npm을 통해 먼저 설치를 해야 한다.

npm install -g yarn

컴퓨터 모두에서 yarn을 사용할 수 있도록 global 키워드를 사용해서 설치를 해준다.

설치 후에는 yarn, yarn init 명령어를 통해서 yarn 폴더를 생성한 후 설정을 해주면 된다.

3️⃣ pnpm

pnpm은 2017년에 Zoltan Kochan이라는 개발자가 내놓은 패키지 매니저로 "performant npm"의 약자이기도 하다.

즉, 효율적인 npm이라는 의미인데 말 그대로 효율성이라는 장점이자 특징을 가진 패키지 매니저다.

pnpm의 경우에는 프로젝트별로 node_modules에 매번 패키지를 설치했던 것과는 달리 global 저장소에 패키지를 한 번만 저장함으로써 저장 공간을 절약할 수 있다는 아주 큰 장점을 가지고 있다.
즉, pnpm을 사용한다면 똑같은 라이브러리를 중복해서 설치할 필요가 없다는 의미다.

다만, 주의할 점은 특정 패키지를 한 번만 설치하기 때문에 프로젝트별로 연결을 해놓으면 호환 문제가 발생할 수 있다. 따라서 프로젝트끼리 호한 문제가 발생하지 않도록 버전 관리를 반드시 해줄 필요가 있다.

[ 사용 방법 ]

사용 방법은 크게 어렵지 않다.
공식 문서를 참고해서 pnpm을 설치하고 문서에 나와있는 대로 사용하면 될 것 같다!

문서 참고!
https://pnpm.io/ko/installation


💡 어떤 패키지 매니저를 사용해야 할까?

사실, 위에서 살펴본 패키지 매니저의 경우 현재 사용해도 큰 문제가 없을 정도로 안정적인 상태이기 때문에 개인의 취향 혹은 프로젝트의 특성에 따라서 선택해서 사용해도 큰 문제가 없다.

다만, 사용 추세를 보면 npm과 yarn을 가장 많이 사용하고 있고 yarn이 등장했을 때 보안의 이슈로 인해 npm 사용을 지양하기도 했지만 npm도 꾸준히 보안 개선을 해왔기 때문에 npm을 사용하는 것도 괜찮다고 한다.

따라서, 다양한 패키지 매니저들을 직접 사용해 보고 본인에게 맞는 것을 선택해서 사용하면 될 것 같다!


참고 사이트
https://drspace.tistory.com/91

profile
🏠 블로그 이전 중 → https://medium.com/@sebinndev

0개의 댓글