peerDependencies
는 package.json
파일의 한 필드로, 패키지가 특정 버전의 다른 패키지와 함께 동작해야 함을 나타낸다. 주로 플러그인이나 라이브러리가 특정 버전의 상위 라이브러리와 함께 동작해야 할 때 사용된다.
React 플러그인을 만들 때, 플러그인이 특정 버전의 React와 호환되도록 하고 싶다면 peerDependencies
를 사용하여 React 버전을 지정할 수 있다. 아래 예시에서, my-react-plugin은 React 16 이상 버전과 함께 사용되어야 한다.
{
"name": "my-react-plugin",
"version": "1.0.0",
"peerDependencies": {
"react": ">=16.0.0"
}
}
peerDependencies
의 주요 특징
- 경고:
peerDependencies
에 명시된 패키지가 설치되어 있지 않으면 NPM은 경고 메시지를 출력한다. 하지만 NPM 7 이전 버전에서는 자동으로 설치되지 않는다. - 공유:
peerDependencies
는 프로젝트의 여러 패키지가 동일한 상위 패키지를 공유하도록 유도한다. 이를 통해 여러 플러그인이 같은 상위 패키지 인스턴스를 사용할 수 있다.
NPM 7에서의 변화
NPM 7부터는 peerDependencies
의 설치 방식에 큰 변화가 있었다. 이제 NPM은 peerDependencies
를 자동으로 설치하고 peerDependencies
가 충돌하면 설치가 실패할 수 있다.
만약 peerDependencies
에 충돌이 있다면, NPM은 다음과 같은 에러 메시지를 출력한다.
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^16.0.0" from my-react-plugin@1.0.0
npm ERR! node_modules/my-react-plugin
npm ERR! my-react-plugin@"1.0.0" from the root project
--legacy-peer-deps
옵션
--legacy-peer-deps
옵션은 NPM 7의 새로운 peerDependencies
처리 방식을 우회하여, NPM 6 스타일로 설치를 진행한다. 이 옵션은 peerDependencies
충돌을 무시하고 설치를 강제로 진행하고자 할 때 사용한다.
npm install --legacy-peer-deps
언제 --legacy-peer-deps
를 사용해야 할까?
- 긴급한 설치가 필요할 때: 프로젝트를 빠르게 설정하거나 빌드해야 하는 상황에서
peerDependencies
충돌로 인해 설치가 중단될 때 - 패키지 호환성 문제를 해결할 때: 특정 패키지들이 아직 NPM 7의 새로운
peerDependencies
처리 방식을 지원하지 않는 경우 - 임시방편으로:
peerDependencies
충돌 문제를 영구적으로 해결하기 전, 임시로 설치를 진행해야 할 때
728x90
'Javascript' 카테고리의 다른 글
[JS] Express 기초 (0) | 2024.08.02 |
---|---|
[JS] 타입스크립트의 Record 타입 (0) | 2024.07.31 |
순수 함수 (3) | 2024.07.22 |
[JS] FileReader 클래스 (0) | 2024.07.20 |
고차 함수 (0) | 2024.07.08 |