티스토리 뷰
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
- 오블완
- ChatGPT
- openAI
- webpack
- seo
- NUXT
- Vite
- cors
- nextjs15
- vue router
- 서버 to 서버
- NextJS
- 네이버 서치 어드바이저
- vscode
- Git
- nodejs
- 깃허브
- AWS
- dockerfile
- 스벨트
- Zustand
- React
- svelte
- nextjs13
- 티스토리챌린지
- vue composition api
- nextjs14
- nuxt2
- 타입스크립트
- Github Actions
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |