Yarn
Exploring the concept of Yarn and its features
August 9, 2024
yarn 패키지 매니저는 js 프로젝트에 의존성을 관리 하기 위해 사용된다. npm이 있지만 npm에 비해 속도가 빠르고 안정성, 보안성이 높다고 알려져 있다.
하지만 yarn은 npm에 비해 속도가 빠른것이지 yarn의 목적자체가 성능은 아니다. 현재는 프로젝트 관리에 포커스를 맞추어 개발이 진행되고 있다.
yarn을 npm으로 설치 할 수 있지만 1.x 버전까지만 등록되어 있고 더이상 업데이트 되지 않는다. node에서 corepack을 활성화 시키면 node에 포함된 yarn을 사용 할 수 있다.
yarn berry
- yarn set version berry를 통해 yarn의 버전을 모던으로 업데이트 할 수 있다.
- yarn berry는 PnP를 사용한다.
- PnP 로더를 이용해 의존성을 불러온다
- yarn berry는 기본적으로 디바이스에 전역적으로 패키지를 캐싱한다.
- 이것을 통해 프로젝트 내에 패키지 파일을 가질 필요가 없다
- 프로젝트 끼리 같은 패키지와 버전을 사용한다면 동일한 패키지 캐시를 참조하기 때문에 중복된 파일을 가지지 않는다
- node_modules와 달리 패키지는 zip 파일로 관리되기 때문에 의존성 추적에 성능적으로 유리하다 (중첩된 폴더와 파일들을 가지지 않다)
- 프로젝트마다 yarn 버전을 다르게 사용 할 수 있다.
- 특정 프로젝트만 yarn classic을 사용 할 수 도 있다.
- 전역 캐시가 아니라 프로젝트 마다 캐시를 가지게 할 수 도 있다.
- .yarnrc.yml 파일에 글로벌 캐시를 끄면 프로젝트마다 .yarn/cache 디렉토리에 캐시 파일이 생성된다.
- 브랜치마다 의존성이 다르다면 .yarn/cache 파일이 달라지기 때문에 브랜치를 변경한뒤 별도로 yarn install을 대부분의 경우 실행 할 필요가 없어진다 (zero install이라 부른다)
- workspace 기능을 이용해 모노레포로 관리가 가능하다.