npm, pnpm, yarn, yarn-berry 패키지 매니저에 대해 조사하여, 상황에 따라 적합한 패키지 매니저를 차용하기 위해 작성한 아티클 입니다.
In Writing...
패키지 매니저 별 다운로드 수
패키지 매니저 소개 및 특징
- yarn & yarn-berry
- yarn(yet another resource negotiator)은 facebook에서 빌드하고 google, Exponent 및 Tilde에서 지원하는 javascript 패키지 및 종속성 관리자이다.
- 2016년 npm의 대안으로 처음 만들어졌다.
- yarn 특징
- offline Mode : 이전에 패키지를 설치했다면 인터넷 연결 없이 다시 설치할 수 있다.
- Deterministic : 설치 순서에 관계없이 동일한 종속성이 모든 시스템에 동일한 방식으로 설치된다.
- Network Performance : Yarn은 네트워크 활용도를 극대화하기 위해 효율적으로 요청을 대기열에 넣고 요청 워터폴을 방지한다.
- Network Resilience : 단일 요청이 실패해도 전체 설치가 실패하지 않는다. 요청은 실패시 자동으로 재시도된다.
- Flat Mode : Yarn은 일치하지 않는 종속성 버전을 단일 버전으로 해결하여 중복 생성을 방지한다.
- Secure : Yarn은 체크섬을 사용하여 코드가 실행되기 전에 설치된 모든 패키지의 무결성을 확인한다.
- yarn-berry 특징
- pnpm(Performant Node Package Manager) // performant - working in an effective way
설치 방법
- yarn & yarn-berry
npm install -g yarn
// yarn-berry
yarn set version berry
- pnpm
npm install -g pnpm
yarn과 yarn-berry 차이
Yarn과 Yarn Berry는 둘 다 JavaScript 패키지 매니저인 Yarn의 버전입니다. 그러나 Yarn Berry는 Yarn의 두 번째 주요 릴리스(2.x)로, 이전 버전(Yarn Classic 또는 1.x)과는 몇 가지 중요한 차이점이 있습니다. 주요 차이점을 정리하면 다음과 같습니다:
1. 아키텍처 및 성능
Yarn (Yarn Classic, 1.x):
Yarn Classic은 npm의 기능을 개선하고 속도를 높이기 위해 만들어진 패키지 매니저입니다.
많은 부분에서 npm과 유사한 동작을 합니다.
Yarn Berry (Yarn 2.x 이상):
Yarn Berry는 완전히 새롭게 재설계된 버전입니다.
Plug'n'Play (PnP) 모드를 기본적으로 사용하여, node_modules 폴더 없이도 패키지 종속성을 관리할 수 있습니다. 이는 성능 향상과 디스크 사용량 절감을 가져옵니다.
PnP는 패키지를 로드하는 방식을 근본적으로 변경하여, 패키지 로딩 속도를 크게 개선합니다.
2. 설정 파일
Yarn Classic (1.x):
주로 yarn.lock 파일과 package.json 파일을 사용합니다.
Yarn Berry (2.x 이상):
.yarnrc.yml 파일을 통해 설정을 관리합니다.
.pnp.js 파일을 통해 PnP 캐시를 관리합니다.
yarn.lock 파일 형식도 변경되었습니다.
3. 기능 및 플러그인 시스템
Yarn Classic (1.x):
고정된 기능 세트를 제공하며, 플러그인 시스템이 제한적(조사 필요)입니다.
Yarn Berry (2.x 이상):
모듈화된 플러그인 시스템을 도입하여, 필요에 따라 기능을 확장할 수 있습니다.
기본 제공 플러그인 외에도 커뮤니티가 만든 다양한 플러그인을 사용할 수 있습니다.
constraints.pro 파일을 사용하여 패키지 종속성 규칙을 정의할 수 있습니다.
4. 명령어 변경
Yarn Classic (1.x):
전통적인 명령어 사용 방식(yarn add, yarn install, 등)을 따릅니다.
Yarn Berry (2.x 이상):
몇 가지 명령어가 변경되거나 새로운 명령어가 추가되었습니다.
예를 들어, yarn add 명령어의 옵션이나 동작 방식이 일부 변경될 수 있습니다.
5. 호환성
Yarn Classic (1.x):
대부분의 npm 패키지와 호환됩니다.
Yarn Berry (2.x 이상):
PnP 모드로 인해 일부 패키지는 초기 설정 시 호환성 문제가 발생할 수 있지만, 대부분의 경우 해결 가능한 문제입니다.
기본적으로 PnP 모드를 사용하지만, 필요에 따라 node_modules 호환 모드로 전환할 수 있습니다.
이러한 차이점들은 Yarn Berry가 더 최신 기술과 성능 최적화를 목표로 설계되었음을 보여줍니다. Yarn Berry를 도입할 때는 프로젝트와 팀의 필요에 맞는 설정과 사용 방식을 고려하는 것이 중요합니다.
cf) 참고 article
- https://toss.tech/article/node-modules-and-yarn-berry
- https://supern0va.tistory.com/12
- https://devscb.tistory.com/135
- https://html-jc.tistory.com/676
'기타' 카테고리의 다른 글
PRD란? (1) | 2024.12.19 |
---|---|
Backoff란? (0) | 2024.12.19 |
24년 6주차 회고(24.2.5 ~ 2.9) (2) | 2024.02.08 |
24년 4주차 회고(24.1.22 ~ 1.26) (1) | 2024.01.26 |
24년 3주차 회고(24.1.15 ~ 1.19) (0) | 2024.01.26 |