Blog

테크

Yarn Berry로 마이그레이션하기

#개발환경

2023-08-31

Yarn Berry로 마이그레이션하기
Yarn Berry로 마이그레이션하기

Yarn Berry로 마이그레이션하기

마지막 수정시간
Last updated December 29, 2023
블로그_관련제품
카테고리
테크
제품
작성자
생성일
Aug 30, 2023 07:18 AM
생성자
상태
작성중
블로그게시
게시
태그
개발환경
마지막 수정자
게시자
hyerexx
블로그카테고리
tech
업로드표시날짜
Aug 31, 2023
요약
yarn berry로 마이그레이션 하기
블로그_이벤트
모노레포 이식을 고민하며 여러 가지 도구를 알아보았지만, 익숙한 도구와 작업 공간, PnP라는 꽤 매력적인 조합 덕분에 Yarn Berry를 도입하기로 결정했습니다. 이미 Yarn Classic을 사용하고 있다면, 어떻게 버전 업그레이드를 진행해야 할지 알아볼까요?

Yarn Berry로 마이그레이션하기

Yarn Berry로 마이그레이션하는 과정은 아래와 같습니다. 생각보다 간단하죠? 모든 의존성이 이미 설치되어 있음을 전제로 하고 있습니다.
  1. yarn version 변경하기
  1. 설치된 의존성 마이그레이션하기
  1. PnP 적용하기
  1. 기타 툴 설치
 
천천히 해 볼까요?
 

1. Yarn 버전 변경하기

버전 변경은 굉장히 간단합니다. 루트 디렉토리에서 커맨드라인에 yarn set version berry라고 입력하면 yarn이 버전을 업그레이드합니다.
지금부터 당신도 Yarn Berry 유저!
지금부터 당신도 Yarn Berry 유저!
.yarn 폴더와 .yarnrc.yml 파일이 생성됩니다.
.yarn 폴더와 .yarnrc.yml 파일이 생성됩니다.
 

2. 설치된 의존성 마이그레이션 하기

버전을 변경하면서 생긴 .yarnrc.yml 파일에 nodeLinker: node-modules 옵션을 추가하고 yarn install 명령어를 실행합니다. 기존에 생성된 yarn.lock 파일을 berry 버전으로 마이그레이션 하는 과정입니다.
처음에 생성된 .yarnrc.yml 입니다.
처음에 생성된 .yarnrc.yml 입니다.
이렇게 옵션을 추가합니다.
이렇게 옵션을 추가합니다.
yarn install을 통해 의존성이 이식됩니다.
yarn install을 통해 의존성이 이식됩니다.
 

3. PnP 적용하기

마이그레이션 하기 위해 임시로 설정했던 nodeLinker 옵션을 제거하고 다시 한번 yarn install 을 수행하면 마이그레이션 된 .lock 파일을 읽어 PnP 버전으로 의존성을 설치합니다.
nodeLinker 옵션을 제거하고
nodeLinker 옵션을 제거하고
yarn install을 명령하면
yarn install을 명령하면
PnP 파일들이 생성되고
PnP 파일들이 생성되고
의존성은 이렇게 추가됩니다.
의존성은 이렇게 추가됩니다.
 

4. ZipFS 설치하기

위의 이미지에서 볼 수 있는 것처럼 PnP는 의존성을 zip 파일로 관리합니다. 기존 node_modules처럼 낱개 파일로 분리되어 있지 않으니 zip 파일을 읽을 수 있도록 vscode 확장 프로그램을 설치해 주어야 합니다.
또, 타입스크립트를 사용하는 경우 개별 모듈의 타입 파일을 읽고 파싱할 수 있도록 툴킷을 설치해 주어야 합니다. 이 툴킷은 yarn dlx @yarnpkg/sdks vscode 명령어로 설치할 수 있습니다.
 
ZipFS 설치 (VSCode)
ZipFS 설치 (VSCode)
툴킷 설치
툴킷 설치
 
이렇게 하면 우선 마이그레이션은 완료입니다. 생성된 파일들을 git에서 관리하면 zero-install도 실현 가능하고, 프로젝트 구성원들끼리 완전히 같은 의존성을 사용한다는 전제에 프로젝트를 운용할 수 있게 됩니다. 물론, 설치 시간과 용량이 줄어들었으니 docker에서 빌드할 때에도 시간이 많이 단축되고요!
 
공식문서에 마이그레이션 관련 설명이 워낙 잘 되어 있어서 대부분의 문제들은 해결이 가능합니다. 워크스페이스 기능도 향상되어 모노레포에 도전해 보기에도 좋으니 한번 시도해 보는 건 어떨까요?
 

참고 문서

 

hyerexx

관련된 이야기