일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Sequelize
- GIT
- jest
- 공룡게임
- Bull
- 자료구조
- JavaScript
- Nest.js
- mongoose
- 정렬
- nodejs
- dfs
- Dinosaur
- OCR
- class
- typeORM
- cookie
- MongoDB
- Python
- flask
- MySQL
- game
- Express
- AWS
- 게임
- TypeScript
- react
- Queue
- nestjs
- Today
- Total
포시코딩
7월17일 - 패키지 매니저 비교 (npm, yarn, yarn-berry, pnpm) 본문
개요
새로운 프로젝트를 만들기 앞서 '최고의 튜닝은 순정이지' 라는 생각으로 (사실은 추가적인 러닝 없이 사용할 수 있는)
npm을 사용했지만 yarn을 사용해볼까 했다.
이왕 쓰는거 yarn 최신 버전으로 업그레이드하고 쓸려고 검색을 좀 하는데
내가 알던 yarn은 1.x 버전에서 더 이상 지원하지 않고 yarn-berry를 yarn2로써 사용하고 있다는 것이었다.
자, 그럼 PnP 지원 등의 이유로 yarn 대신 yarn-berry를 쓴다는건 알았다.
여기서 추가로 pnpm에 대해서도 새롭게 알게 되었고 아래 글들을 통해 어느정도 차이점들을 확인할 수 있었다.
비교
고맙게도 비교적 최근인 작년 기준으로 패키지 매니저들을 비교해 작성된 글들이 꽤 있었고 다음과 같다.
https://velog.io/@seobbang/패키지-매니저-npm-yarn-pnpm-yarn-berry
https://hiddenest.dev/yarn-pnpm-3
선발대가 yarn-berry를 사용하면서 발생한 몇가지 단점들을 간단하게 정리하자면 다음과 같다.
- PnP를 지원하지 않는 패키지가 하나라도 존재하면 zero install의 장점을 누릴 수 없음
- PnP 모드는 node_modules 대신 .yarn/cache에 패키지를 압축하여 관리하기 때문에
zero install을 할 수 있는건데 git 관리 측면에서 볼 때,
이러한 사항은 commit이 많을수록, 그리고 한 commit에 포함되는 파일의 용량과 수가 많을수록
영구히 기록되는 부분에 대한 영향이 적지 않다는 것이다.
(그렇다고 commit history만 살리고 파일만 지우는 방법은 오버 엔지니어링이기 때문에) - Ghost dependency 등 dependency 참조 관련 다양한 버그들이 존재
변경하고서도 pnpm이 yarn-berry보다 빌드 속도가 빠르다는 장점이 존재하는 등
여러모로 당장은 yarn-berry 보다 pnpm을 사용하는게 좋다는 결론을 얻을 수 있었다.
그렇다고 무조건 yarn-berry보다 pnpm을 사용하는 건 아닌듯 하다.
아래처럼 규모가 있는 회사에서도 성공적으로 도입하여 사용하고 있으니
각각의 장단점을 고려하여 선택하면 될듯하다.
yarn-berry 도입 예제
https://techblog.woowahan.com/7976/
'TIL' 카테고리의 다른 글
7월20일 - [JS] process.exit, process.exitCode (0) | 2023.07.20 |
---|---|
7월18일 - JavaScript의 비동기 작업와 블로킹 (0) | 2023.07.19 |
7월16일 - 자료구조 (Queue, Stack, Hash) with. JavaScript (0) | 2023.07.17 |
5월5일 - [Python] PriorityQueue(우선순위 큐), heapq (0) | 2023.05.05 |
5월1일 - [Python] list와 set에서의 데이터 찾기 차이 - 배열과 해시 테이블 (0) | 2023.05.02 |