포시코딩

7월17일 - 패키지 매니저 비교 (npm, yarn, yarn-berry, pnpm) 본문

TIL

7월17일 - 패키지 매니저 비교 (npm, yarn, yarn-berry, pnpm)

포시 2023. 7. 17. 17:53
728x90

개요

새로운 프로젝트를 만들기 앞서 '최고의 튜닝은 순정이지' 라는 생각으로 (사실은 추가적인 러닝 없이 사용할 수 있는)

npm을 사용했지만 yarn을 사용해볼까 했다. 

 

이왕 쓰는거 yarn 최신 버전으로 업그레이드하고 쓸려고 검색을 좀 하는데 

내가 알던 yarn은 1.x 버전에서 더 이상 지원하지 않고 yarn-berry를 yarn2로써 사용하고 있다는 것이었다. 

자, 그럼 PnP 지원 등의 이유로 yarn 대신 yarn-berry를 쓴다는건 알았다. 

 

여기서 추가로 pnpm에 대해서도 새롭게 알게 되었고 아래 글들을 통해 어느정도 차이점들을 확인할 수 있었다.

 

비교

고맙게도 비교적 최근인 작년 기준으로 패키지 매니저들을 비교해 작성된 글들이 꽤 있었고 다음과 같다.

 

https://velog.io/@seobbang/패키지-매니저-npm-yarn-pnpm-yarn-berry

 

[패키지 매니저] npm, yarn, pnpm, yarn-berry

다양한 자바스크립트 패키지 매니저에 대해 알아보고 비교해보자!

velog.io

https://hiddenest.dev/yarn-pnpm-3

 

Yarn 대신 pnpm으로 넘어간 3가지 이유

패키지 매니저를 바꾸고 1년 동안 사용해보며 든 생각들

hiddenest.dev

 

선발대가 yarn-berry를 사용하면서 발생한 몇가지 단점들을 간단하게 정리하자면 다음과 같다. 

  1. PnP를 지원하지 않는 패키지가 하나라도 존재하면 zero install의 장점을 누릴 수 없음
  2. PnP 모드는 node_modules 대신 .yarn/cache에 패키지를 압축하여 관리하기 때문에
    zero install을 할 수 있는건데 git 관리 측면에서 볼 때,
    이러한 사항은 commit이 많을수록, 그리고 한 commit에 포함되는 파일의 용량과 수가 많을수록
    영구히 기록되는 부분에 대한 영향이 적지 않다는 것이다.
    (그렇다고 commit history만 살리고 파일만 지우는 방법은 오버 엔지니어링이기 때문에)
  3. Ghost dependency 등 dependency 참조 관련 다양한 버그들이 존재

변경하고서도 pnpm이 yarn-berry보다 빌드 속도가 빠르다는 장점이 존재하는 등 

여러모로 당장은 yarn-berry 보다 pnpm을 사용하는게 좋다는 결론을 얻을 수 있었다.

 

 

그렇다고 무조건 yarn-berry보다 pnpm을 사용하는 건 아닌듯 하다.

아래처럼 규모가 있는 회사에서도 성공적으로 도입하여 사용하고 있으니
각각의 장단점을 고려하여 선택하면 될듯하다. 

 

 

yarn-berry 도입 예제

https://techblog.woowahan.com/7976/

 

Yarn berry workspace를 활용한 프론트엔드 모노레포 구축기 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요 우아한형제들 딜리버리프로덕트실 DH로컬라이징스쿼드 입니다. 저희 조직에서는 백오피스 애플리케이션, 크로스플랫폼 모바일 애플리케이션 등 다양한 프론트엔드 프로

techblog.woowahan.com

https://blog.dramancompany.com/2023/02/%EB%A6%AC%EB%A9%A4%EB%B2%84-%EC%9B%B9-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%A2%8C%EC%B6%A9%EC%9A%B0%EB%8F%8C-yarn-berry-%EB%8F%84%EC%9E%85%EA%B8%B0/

 

리멤버 웹 서비스 좌충우돌 Yarn Berry 도입기 - DRAMA&COMPANY

리멤버 프로덕션 서비스를 Yarn Berry로 마이그레이션 해본 경험, A to Z까지!

blog.dramancompany.com

 

728x90