yarn berry 구축기

s2ksh77·2022년 11월 4일
0

참조 : https://toss.tech/article/node-modules-and-yarn-berry

Toss Tech 블로그를 탐구하고 공부하던 중 yarn berry에 대한 글을 일게 되었습니다.
최근, 기존 프로젝트를 마지막으로 새로운 모듈을 시작하게 되면서 node_modules에 대한 의존성 관리 대신 yarn berry를 구축해보면 어떨까 하여 간단하게 구축해본 부분을 적어볼까 합니다.

Yarn Berry란?

yarn berry 는 기존 Node.js를 위한 패키지 관리 시스템으로써, npm의 패키지 관리하는 고질적인 문제나 큰 용량, 또는 package.json에 명시되지 않은 유령 dependency등을 해결하기 위한 패키지 관리 시스템 입니다.

[https://github.com/yarnpkg/berry](Yarn Berry Github)에서 확인 하실 수 있습니다.

Yarn Berry 등장 배경

  • 어떠한 의존성을 찾기 위해 전체 의존성들을 검색하여 찾는 비효율적인 의존성 검색.
  • 동일한 패키지들의 중복들을 제거하지 못하고 여러벌이 생김.
  • 유령 의존성들이 발생하게 됨.

Yarn Berry ?

PnP라는 개념 ( Plug n Play ) 라는 개념으로 pnp 자체에 버전, 위치, 의존성 등을 담고 관리하게 됩니다.

yarn(v2,v3) 에서는 yarn install 시 node_modules를 생성하지 않고,
기존 .yarn/cache 폴더에 zip파일로 저장하고 해당경로를 .pnp.js에 명시하게 됩니다.

  • npm에서의 문제 점인 비효율적인 의존성 검색 대신 pnp에서 제공하는 구조로 패키지를 찾게 됩니다.
  • 중복 설치가 되지 않습니다.
  • 또한 git에 관리하게 되면 따로 설치하지 않아도 바로 사용할 수 있습니다. (zero-install)
  • 기존 node_modules에 비해 설치하는 시간이나, 용량이 매우 적습니다.

Yarn Berry 설치?

기존에 yarn이 설치가 되어있으신 분들은 yarn set version berry 을 이용하여 버전을 변경할 수 있습니다.

주의 사항) yarn set version berry 을 하였는데도 버전이 변경되지 않는다면, 기존 프로젝트의 yarn.lock 파일과 node_modules를 지우고 수행해보시길 바랍니다. (이것 때문에 한참 헤매게 된...)

.gitignore에 추가

# zero-installs
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
코드를 입력하세요

또한 vscode에 extension을 설치 해줍니다.
기본적으로 .yarn/cache에 올라가 있는 패키지들은 zip파일로 되어있기 때문에 zipfs 의 익스텐션을 설치 해줍니다.

그다음

yarn dlx @yarnpkg/sdks vscode 

코드를 입력하게 되고 vscode에서 메세지가 뜨게 되는데,

해당 메세지의 allow를 수행하여 줍니다.

마치며

아직은 yarn berry에 대한 기본적인 세팅만 해놓은 상태여서, 프로젝트를 진행하면서 발생하게 된 부분에 대해 따로 글을 적어볼 예정입니다.
부족한 글 읽어주셔서 감사합니다.

profile
오너십을 가지고 끊임없이 더 나은 방향을 고민하는 개발자 입니다. 새로운 기술을 적용하고 배우는 것을 좋아합니다.

0개의 댓글