티스토리 뷰

개발../Node

yarn berry

링재호 2022. 6. 22. 20:04

npm 의 문제점

npm 을 사용하여 node_modules 를 만들면, 많은 용량과 많은 디렉토리를 만들어 속도와 용량의 문제점을 발생시키며,
사용하고자 하는 의존성을 찾는데 npm 은 상위 node_modules 계속 탐색하여 찾으며, 패키지를 찾지 못할 수록 속도는 현저히 느려집니다. 가끔씩 찾지 못해 에러를 발생하는 것도 볼 수 있을 것 입니다. (지웟다가 다시 깔아보고.. 다시 깔아보고... 근데 느리고...)

yarn berry

기존의 yarn 을 이용하여 설치시 npm 을 이용한 node_modules 보다는 가볍고 빠르다지만, node_modules 를 이용하는 것은 변함이 없습니다. 이러한 node_modules 를 해결해주기 위해 나온 것이 yarn berry 입니다.

yarn berry 는 pnp 방식을 채택하였으며, 이 방법을 이용하여 node_modules 를 설치하지 않습니다.
대신 .yarn/cache 폴더에 의존성의 정보를 zip 아카이브 파일로 저장하고 .pnp.js 에서 의존성을 찾는 정보를 기록합니다.
이러한 방식을 이용하여, node_modules 에 디렉토리 구조를 만들지 않아도 되고 zip 파일로 저장되어 용량을 아낄 수 있으며, 각 버전별로 설치되기 때문에 중복된 설치가 일어나지 않는다. (속도, 용량 클리어!)

[참고] https://yarnpkg.com/features/pnp

zero-install

yarn berry 는 의존성도 버전관리(용량이 적어서 할 수 있어...)를 할 수 있도록 도와주는데 이것을 zero-install 이라고 한다.
zero-install 을 사용하게 되면 별도의 설치 없이 바로 실행하여 쓸 수 있습니다.

zero-install 사용시에 gitignore 를 아래와 같이 설정해주세요. (cache 와 pnp 는 zip 과 경로이기 때문에 하나입니다.)

.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

설정하지 않으시는 경우에는, cache 와 .pnp.* 을 둘 다 제외해주면 됩니다.

.yarn/*
!.yarn/patches
!.yarn/releases
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
.pnp.*

사용법

// 최신 yarn 버전을 다운받는다.
npm install -g yarn

// yarn berry 셋팅
yarn set version berry

// yarn 설치
yarn

만약에 node_modules 이 설치되는 경우, .yarnrc.yml 파일에 nodeLinker: node-modules 가 설정되어 있을 확률이 있다.
해당 부분을 삭제하고 다시 yarn 을 설치하면 node_modules 가 사라질 것이다.

너무 좋구만?!

'개발.. > Node' 카테고리의 다른 글

npkill  (0) 2023.03.31
cross-env  (0) 2022.09.26
gulp-typescript  (0) 2022.05.18
Node Sass version 7.0.0 is incompatible with ^4.0.0 || ^5.0.0 || ^6.0.0.  (0) 2022.03.14
Cannot find module '@babel/helper-builder-react-jsx'  (0) 2022.03.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함