티스토리 뷰
resolutions
package.json에 resolutions
라는 필드가 있는데, 여기서는 package.json에 있는 의존성들의 특정 버전이나 range를 지정할 수 있다.
package.json에는 일반적으로 semantic versioning을 사용하여 range로 패키지 버전을 설정하는데 왜 커스텀 버전을 설정할 필요가 있는걸까?
예를 들어 프로젝트가 A 패키지에 의존하고 있다고 가정하자. 그런데 A는 또 다른 패키지인 B에 의존하고 있다면, 여기서 B에 서브 의존성(또는 하위 의존성)이 있다고 할 수 있다. package.json 파일에는 우리가 직접적으로 의존하고 있는 A의 버전만 관리할 수 있을 뿐, 간접적으로 의존하고 있는 B에 대해서는 지정하지 않는다.
만약 A의 package.json에 B: ^1.0.0
이렇게 명시돼 있는데, B의 새로 업데이트된 버전인 1.1.0에서 심각한 보안 이슈가 발생했다고 하자. 그러면 당연히 B에 의존하고 있는 A에도 문제가 생길 수 있으므로, 하위 의존성인 B의 버전을 1.0.0에 고정하고 싶을 수 있다. 이런 경우에 아래처럼 하위 의존성 버전을 고정한다.
"resolutions": {
"A/B": "1.0.0" // A의 하위에 있는 B 패키지의 버전을 1.0.0으로 고정한다.
}
resolutions가 필요할 수 있는 경우
- 하위 의존성 B에 대규모 업데이트가 있었는데 B에 의존하는 A가 이를 커버하지 않는 경우, A가 이 업데이트를 커버할 때까지 기다릴 수 없으므로 B의 버전을 earlier 버전으로 고정한다.
- 하위 의존성 B에 마이너 업데이트가 있었는데 굳이 이를 반영할 필요성을 못 느끼는 경우
- 부정적인 영향을 끼칠 수 있는 문제있는 업데이트가 있어서 earlier 버전에 고정하고 싶은 경우
- 하위 의존성 B가 중요한 보안 이슈를 해결하는 업데이트를 했는데 A의 package.json에 반영되기를 기다리기를 원하지 않는 경우 직접 지정한다.
Ref
https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/
'공부일지(TIL) > Web' 카테고리의 다른 글
자바스크립트로 파일 다운로드하기 (0) | 2022.03.04 |
---|---|
Static Rendering vs Server Side Rendering (0) | 2021.11.15 |
Yarn workspaces (0) | 2021.07.28 |
스크립트 로딩 (async, defer) (0) | 2021.07.20 |
Window vs Document (0) | 2021.07.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- GIT
- Java
- Prefix Sums
- 개발 공부
- Conflict
- Redux
- Data Structure
- 자바
- 리덕스
- til
- jQuery
- 포인터 변수
- youtube data api
- rxjs
- package.json
- this
- 알고리즘
- useEffect
- c언어
- 깃
- react
- oracle
- SQL
- getter
- 인스턴스
- linkedlist
- CSS
- Session
- 제네릭스
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함