기록

npm, yarn, yarn berry 등 정리 본문

TIL*

npm, yarn, yarn berry 등 정리

mnmhbbb 2023. 8. 18. 02:07

yarn & yarn berry란?

  • yarn은 npm과 같은 Node Package Manager
  • yarn의 1 버전: yarn classic
  • yarn의 2 버전 이상: yarn berry
  • 2023년 작성 기준 yarn의 최신 버전은 3.6.1

 

yarn berry가 더 좋은 이유

-> npm과 yarn classic의 문제점을 해결해 준다.

  • npm과 yarn classic은 비효율적인 디펜던시 탐색, 중복제거를 못함, 큰 공간, 긴 설치 시간, 유령 의존성(phantom dependency) 등의 문제점을 가짐.
  • yarn은 Plug n Play(pnp) 라는 개념을 사용하여 기존 문제점을 해결함.
  • pnp는 버전, 위치, 의존성 등을 담고 있음.
  • node_modules를 생성하지 않고 기본 캐시 폴더에 zip파일로 저장해서 경로를 .pnp.js에 명시함
  • .pnp.cjs 파일로 의존성을 관리하기 때문에 의존성 탐색 시간이 감소함.
  • yarn berry는 용량 문제를 해결하기 위해 각각의 패키지를 zip 파일로 압축함.
  • .yarn/cache/ 디렉토리에 압축된 zip파일들이 저장되어있음.
  • 이러한 압축을 통해 node_modules 대비 패키지 용량 10배 이상 감소.
  • 예를 들어 A 패키지를 실행해야 한다면, .pnp.cjs파일에서 A 패키지의 의존성 정보를 읽어와서 A 패키지의 의존성 패키지를 .yarn/cache에서 찾아 실행함.
  • 또한, yarn berry는 설치가 필요없는 zero-install을 지향함
  • Zero-Install란, 설치 없이(yarn install 명령어 없이) 바로 프로젝트를 실행할 수 있도록 하는 설정
  • 이제 용량과 파일의 숫자가 적기 때문에 의존성을 git으로 관리 가능함.
  • 따라서, 모든 사용자가 git clone을 통해 같은 zip 파일을 사용하기 때문에 동일한 개발 환경을 갖게 됨.
  • yarn install 을 할 필요가 없기 때문에 ci 시간 또한 감소함.

 

 

추가적인 내용:

추가 중

 

참고:
https://helloinyong.tistory.com/341
https://beomy.github.io/tech/etc/yarn-berry/
https://velog.io/@goyoung2/yarn-berry
https://duck-blog.vercel.app/blog/web/what-is-yarn-berry

 

알고 있던 내용도 다시 한 번 정리하기

Comments