Tech

Diary

Lecture

개발중

About Me

개발중

peerDependencies 오류

JeongSeulho

2024년 04월 05일

준비중...
클립보드로 복사
thumbnail

0. 들어가며

ERESOLVE unable to resolve dependency tree 에러가 발생하였고 이를 해결하는 과정에서 peerDependencies에 대해 알아보았다.

1. peerDependencies

my-react-lib라는 리액트 17버전에 의존하는 라이브러리를 만들었다고 가정하자. 그러면 해당 라이브러리의 package.json에서 호환되는 react 17 버전을 peerDependencies로 추가한다.

  • my-react-lib package.json
copy
  "peerDependencies": {
    "react": "^17.0.0"
  }

이처럼 peerDependencies는 실제 의존하지는 않지만 다른 라이브러리와 호환이 필요한 경우 해당 라이브러리의 버전을 명시하는데 사용된다.

2. ERESOLVE unable to resolve dependency tree

해당 에러는 peerDependencies와 관련된 에러로, peerDependencies에 명시된 버전과 호환되지 않는 버전의 라이브러리가 설치되어 있을 때 발생한다.
예를 들어 리액트 18버전을 사용한 my-app이라는 프로젝트가 있고 이 프로젝트에서 my-react-lib를 사용한다고 가정하자.
그러면 my-react-libpeerDependenciesreact 17이 명시되어 있고 my-app에서 react 18을 사용하고 있다면 peerDependencies와 호환되지 않아 에러가 발생한다.

3. 해결 방법

3.1 --legacy-peer-deps 옵션

만약 npm install --legacy-peer-deps로 설치하면 peerDependencies를 무시하고 설치된다, npm 6버전 이하에서는 에러를 띄우지않고 이 방법으로 자동으로 해결하며 설치된다.

3.2 --force 옵션

package-lock.json에 필요한 peerDependencies를 루트 프로젝트에 설치하여 해결할 수 있다, 단 이 경우 노드모듈의 용량이 매우 커진다.