[Package] yarn berry로 마이그레이션 하기
💡 시작하기
yarn classic에서 yarn berry로 마이그레이션하라는 업무를 맡게 되었다
근데 yarn berry라는 게 뭔지 몰라서 이번 기회에 공부하면서 세팅까지 해보기로 했다!
🍓 yarn berry
npm, yarn을 쓰다보면 가장 골치 아픈 게 바로 node_modules다.
- npm : node_modules 폴더에서 찾는 패키지가 있는지 없는지를 계속해서 탐색하고,
- yarn : 패키지의 유효성만 검사하고 그 패키지가 올바른지에 대한 건 검사를 하지 않는다
⇒ package.json 파일을 기반으로 의존성 트리를 생성하고, 디스크에 node_modules 디렉토리 구조를 만들기에 용량이 큼 + 원하는 패키지를 찾는 데에 많은 시간이 듦 = npm과 yarn의 단점
하지만 이것을 yarn berry를 쓰면 해결이 가능하다고 한다!
🆙 yarn berry로 마이그레이션하기
1. 설치
yarn set version berry
2. 생성되어 있는 yarn.lock을 berry로 마이그레이션하기
# .yarnrc.yml
nodeLinker: node-modules # 추가하기
enableGlobalCache: false # 추가하기
yarn install
3. PnP(Plug’n’play) 만들기
전 단계에서 .yarnrc.yml에 추가해놨던 nodeLinker: node-modules 지우고
yarn install
4. ZipFS 설치하기
// 설치 후 다음 명령어 입력
yarn dlx @yarnpkg/sdks vscode
💥 트러블 슈팅
4단계까지도 했는데 모든 라이브러리를 읽어들이지 못하는 에러 발생
⬇️ SOLUTION
ts 파일을 아무거나 킨 다음, Cmd + Shift + P 를 입력하면 다음과 같은 창이 뜬다
검색창에 typescript version을 입력한다
sdk가 달려있는 “작업 영역 버전 사용”을 클릭하고 vscode를 재실행하면 에러 해결~!
원래는 yarn dlx @yarnpkg/sdks vscode를 입력하면 팝업이 뜨면서 해당 사항을 바로 설정할 수 있도록 하는데 내가 그걸 못 봤었다 허허.. 팝업을 놓치면 해당 방법으로 수정하면 된다!
📝 정리
이번 글에서는 기존 Yarn Classic 프로젝트를 Yarn Berry로 마이그레이션하는 과정을 기록했다.
node_modules 없이 의존성을 관리하는 PnP와 ZipFS를 적용하면서 빌드 과정에서 발생한 트러블을 해결하는 법도 함께 정리해봤다.
다음 글에서는 이렇게 Yarn Berry로 바꾼 프로젝트를 기반으로, Docker를 사용하여 빌드하는 과정을 기록할 예정이다.
