yarn berry는 참조중인 패키지를 커스텀 해서 사용하려면 yarn과는 명령어가 다르다
yarn 의 경우에는 라이브러리를 사용해서 쉽게 해결하는 경우가 있고(patch-package
),
yarn berry의 경우에는 yarn에서 직접 제공해주는 patch 메소드를 이용해서 해주면 된다
예시로 설명해보자면 (vs code)
수정 할 라이브러리 이름을 기재한다.
yarn patch swiper
You can now edit the following folder : <url>
문구 옆에 나오는 url을 클릭해서 이동
새 vsCode 창이 열리면 수정하고 싶은 부분을 수정한다.
수정한 뒤 Once you are done run <commit 명령어>
커밋명령어를 적용시킬 내 프로젝트 터미널에 그대로 입력한다
package.json
파일 마지막 줄에라이브러리 이름@버전 : 적용시킨 patch 위치
가 생긴다 "resolutions": {
"swiper@^8.3.2": "patch:swiper@npm%3A8.3.2#./.yarn/patches/swiper-npm-8.3.2-1fc49d1c17.patch"
}
}
yarn install
실행 후 변경사항을 레포지토리에 저장해서 올리면 된다.❌ 5번 순서를 생략한다면 아래와 같이 빌드시에 에러코드가 발생할 수 있다
The lockfile would have been modified by this install, which is explicitly forbidden
Internal Error: swiper@patch:swiper@npm%3A8.3.2#./.yarn/patches/swiper-npm-8.3.2-1fc49d1c17.patch::locator=boiler%40workspace%3A.: This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile
인스톨 후 다시 적용시키면 빌드에러 없이 잘 적용되는 걸 확인할 수 있다 😌
처음에는 이 문제를 발견했던 라이브러리에서 문의를 했을 때
라이브러리 버전 업을 하라는 답변을 받아서 패캐지를 업그레이드를 하면서
yarn berry 와 yarn의 업데이트 명령어도 다른것을 알 수 있었다.
yarn berry
> yarn up // 명령어
yarn
> yarn upgrade // 명령어
결국에는 라이브러리에 타입정의가 잘못되어있던것으로 확인되어서
수정요청 후에 버전 업 된 라이브러리를 1)패키지 업그레이드 방식으로 적용하였고,
후에 다른 라이브러리에서 발생한 타입에러는 2)위 방식대로 수정하여서 적용시켜보았다 !