yarn은 선택적 버전 resolutions를 지원하므로 package.json 파일의 resolutions 필드를 통해 의존성 내에서 사용자 지정 패키지 버전 또는 범위를 정의할 수 있습니다. 일반적으로 이 기능을 사용하려면 yarn.lock 파일에서 수동으로 수정해야합니다.
Why would you want to do this?
- 당신의 프로젝트는 새롭게 잘 업데이트 되지 않는 패키지에 의존하고 있을 수 있습니다. 이 패키지는 중요한 업데이트가된 다른 패키지를 포함하고 있을 수 있죠. 이 경우에, 직접 의존성에 지정된 버전 범위가 새로운 하위 의존성을 포함하지 않으면 library 작성자를 기다릴 수 밖에 없습니다.
- 프로젝트 하위 의존성 요소에 중요한 보안 업데이트가 발생했는데 직접 의존성 요소에서 업데이트하기까지 기다릴 수 없습니다.
- 유지 관리되지는 않지만 작동하는 패키지에 의존하고 있는데 그 의존성 중 하나가 업데이트되었습니다. 업그레이드로 인해 문제가 발생하지 않는다는 것을 알고 있고, 사소한 의존성을 업데이트하기 위해 의존하고 있는 패키지를 포크하고 싶지도 않습니다.
- 의존성이 광범위한 버전 범위를 정의하고 하위 의존성에 문제가 있는 업데이트가 방금 발생하여 이전 버전에 고정하려는 경우입니다.
How to use it?
package.json 파일에 resolution 필드를 추가하고 버전 오버라이드를 정의하세요:
package.json:
{
"name": "project",
"version": "1.0.0",
"dependencies": {
"left-pad": "1.0.0",
"c": "file:../c-1",
"d2": "file:../d2-1"
},
"resolutions": {
"d2/left-pad": "1.1.1",
"c/**/left-pad": "^1.1.2"
}
}
yarn install을 실행하세요
Tips & Tricks
- 잘못된 resolutions(예: 잘못된 패키지 이름)을 정의하면 경고가 표시됩니다.
- resolution version 또는 범위가 유효하지 않은 경우 경고가 표시됩니다.
- resolution version 또는 범위가 원래 버전 범위와 호환되지 않는 경우 경고가 표시됩니다.