[npm] --force 와 --legacy-peer-deps 차이

eunji·2022년 10월 11일
0

에러마주하기

옛날 프로젝트를 실행하고자 커맨드창에 npm i를 치고 기다리는데

npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

에러 발생 🥲

대충 dependency가 충돌이 났다는 뜻인데 이 문제를 해결하기 위해 --force나 --legacy-peer-deps 명령어를 이용하여 해결할 수 있다고 한다.

stack overflow

위 링크를 읽어보니 npm v7부터 install 도중 peerDependencies 충돌이 나면 자동으로 설치가 실패를 한다고 나와있다.

peerDependencies란

실제로 패키지에서 직접 require(import)하지는 않지만 호환성이 필요한 경우 명시한다

만약 A란 라이브러리가 react기반으로 개발이 되었고 그때 react 17.0.0 버전을 peer dependency를 두고 있다고 가정하자.

그리고 현재 내가 개발하고 있는 프로젝트 B는 react 16.0.0버전을 사용하고 있다.

그렇다면 A라이브러리와 B는 서로 버전이 다른 dependency를 가지고 있고 이때 개발자에게 알려준다.

두 명령어의 차이

두 명령어의 차이를 찾아보니

--force는 필요한 경우 패키지의존성을 위해 추가적인 패키지를 설치한다.
--legacy-peer-deps는 설치시 모든 peerDependencies를 무시한다.

profile
프롱이

0개의 댓글