Javascript

peerDepedencies

kyoulho 2024. 7. 30. 18:18

peerDependenciespackage.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를 사용해야 할까?

  1. 긴급한 설치가 필요할 때: 프로젝트를 빠르게 설정하거나 빌드해야 하는 상황에서 peerDependencies 충돌로 인해 설치가 중단될 때
  2. 패키지 호환성 문제를 해결할 때: 특정 패키지들이 아직 NPM 7의 새로운 peerDependencies 처리 방식을 지원하지 않는 경우
  3. 임시방편으로: peerDependencies 충돌 문제를 영구적으로 해결하기 전, 임시로 설치를 진행해야 할 때

 

'Javascript' 카테고리의 다른 글

Express 기초  (0) 2024.08.02
타입스크립트의 Record 타입  (0) 2024.07.31
순수 함수  (3) 2024.07.22
고차 함수  (0) 2024.07.08
이중 NOT 연산자 (!!)  (0) 2024.07.02