기타

패키지 매니저(npm, pnpm, yarn, yarn-berry)

프로일기꾼 2024. 7. 26. 09:03
npm, pnpm, yarn, yarn-berry 패키지 매니저에 대해 조사하여, 상황에 따라 적합한 패키지 매니저를 차용하기 위해 작성한 아티클 입니다.

 

In Writing...

 

패키지 매니저 별 다운로드 수

npm trends 참조(npm은 24년 7월 기준 6백억 건의 다운로드)

 

 


패키지 매니저 소개 및 특징

  • 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