기록
npm, yarn, yarn berry 등 정리 본문
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 시간 또한 감소함.
추가적인 내용:
- yarn berry 설정은 .yarnrc.yml에서 할 수 있음
- nodeLinker, pnpMode 등을 설정할 수 있음
- yarn berry 를 사용한다면 다음 공식 사이트를 참고하여 .gitignore에 관련 코드를 추가할 것(https://yarnpkg.com/getting-started/qa/#which-files-should-be-gitignored)
추가 중
참고:
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
알고 있던 내용도 다시 한 번 정리하기
'TIL*' 카테고리의 다른 글
[object Object] 원인과 해결 방법 (0) | 2023.11.10 |
---|---|
yarn berry typescript cannot find module... 에러 (0) | 2023.08.18 |
[yarn 에러] Usage Error: The nearest package directory (/최상위폴더/유저이름/폴더) doesn't seem to be part of the project declared in /최상위폴더/유저이름. (0) | 2023.08.18 |
'next' 모듈을 찾을 수 없습니다. (0) | 2023.08.17 |
nvm 설치 도중 알게 된 .zshrc 에러 (0) | 2023.08.16 |
Comments