일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- next/link
- react portal
- 식별자란
- Client-Side Navigation
- NVM
- Passed by Value
- 인풋태그 엔터
- 원티드프리온보딩
- 프로젝트
- toast err
- 향해99
- input error
- JS
- 광고지구
- JavaScript
- 회고록
- 원티트 프리온보딩인턴십 1주차
- 알고리즘
- Redux
- git
- CPU와 GPU의 차이점
- 유령 의존성
- Node
- NextJs
- 원티드인턴십
- Til
- Mac OS NVM
- CloudFront 무효화
- react
- jsEvent Loop
- Today
- Total
SUIN
패키지 매니저 Yarn Berry 알아보기 본문
모노래포를 공부하며 yarn berry를 알게 되었고, 최근 많은 기업들에서 프로젝트를 yarn berry로 마이그레이션 중이라는 내용을 보고 yarn berry에 대해 한번 알아보려 합니다.
Yarn Berry 란
Yarn Berry는 Node.js를 위한 새로운 패키지 관리 시스템으로, 기존의 npm, yarn v1의 패키지 비효율적인 매니징 방법을 개선하며 빌드 시간을 단축시켜주고 개발 과정에서의 안정성을 높여줄 수 있습니다.
유령 의존성
NPM은 node_modules폴더를 이용하며 의존성을 관리하며, node_modules의 구조는 매우 큰 공간을 차지하고 있습니다.
만약 여러 패키지들이 의존하는 모듈을 전부 설치한다면 node_modules구조는 깊어지고 무거워질 수밖에 없습니다.
NPM, Yarn v1에서는 각 패키지가 의존하고 있는 패키지들을 최상단으로 끌어올리는(호이스팅) 방법을 사용하여 중복설치된 패키지를 최소화합니다.
이렇게 끌어올려지는 방법은 여러 문제점들이 발생합니다. (유령 의존성)
1. package.json에 명시되지 않은 패키지 또한 사용가능해지는 경우가 생긴다.
2. package.json 패키지를 제거했을 경우 의존되는 내용도 함께 사라질 수 있다
Yarn Berry는 유령 의존성의 문제를 PNP 전략을 이용하여 해결합니다.
Yarn Berry는 node_modules를 생성하지 않으며, 패키지 정보를. zip 파일로 압축하여 yarn/cache 폴더에 의존성 정보를 저장합니다.
압축된 파일을 위치를 찾기 위해. pnp.cjs 파일에서 의존성의 정보를 기록하며 어떤 패키지가 어떤 라이브러리에 의존하며 위치는 어디에 있는지 확인할 수 있습니다. 이러한 방법으로 유령 의존성 문제를 해결하며 파일을 압축함으로써 패키지 용량 또한 줄일 수 있습니다.
zero-install
Zero Install : 패키지들을 래포에 올려 프로젝트의 패키지를 별도의 install 없이 만들 수 있습니다.
- 압축파일로 인해 작아진 용량으로 git으로도 관리될 수 있습니다.
- zero-install을 통해 CI-CD의 자동 배포 시간을 단축할 수 있습니다
Yarn Berry 사용 하기
$ npm install -g yarn
$ cd ../path/to/some-package
$ yarn set version berry
참고
https://toss.tech/article/node-modules-and-yarn-berry
'기타' 카테고리의 다른 글
vsCode + NVM 프로젝트별 자동 노드버전 적용하기 (0) | 2023.05.08 |
---|---|
NVM(Node Version Manage) 설치 및 사용해보기 (Mac) (2) | 2023.05.08 |