npm install --force vs --legacy-peer-deps 차이점

GY·2022년 4월 27일
1

error report

목록 보기
20/22
post-thumbnail

react-testing-library를 설치하려 했더니 이런 에러가 발생했다.

npm ERR! Could not resolve dependency:
npm ERR! peer react@"^18.0.0" from @testing-library/react@13.1.1
npm ERR! node_modules/@testing-library/react
npm ERR! dev @testing-library/react@"*" from the root project
npm ERR!
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.

npm install 명령어를 사용하면서 자주 마주하는 에러인데,
--force와 --legacy-peer-deps의 차이점에 대해 정확히 몰라 알아보고 사용하기로 했다.

npm ver.7

2021년 2월 이후 npm 7버전이 나오면서, 관련 이슈에 대한 내용이 변경되었다.

npm github blog

Automatically installing peer dependencies is an exciting new feature introduced in npm 7. In previous versions of npm (4-6), peer dependencies conflicts presented a warning that versions were not compatible, but would still install dependencies without an error. npm 7 will block installations if an upstream dependency conflict is present that cannot be automatically resolved.

이전 버전까지는 peer dependencies가 발생할 때 경고메시지는 표시하되 설치는 되었으나,
7버전 부터는 해당 에러가 발생하면 설치가 되지 않는다.

그러면 어떻게 해야할까?

You have the option to retry with --force to bypass the conflict or --legacy-peer-deps command to ignore peer dependencies entirely (this behavior is similar to versions 4-6).

--force 명령어를 사용하면 충돌을 우회해 package-lock.json에 몇 가지의 다른 의존 버전들을 추가한다.
--legacy-peer-deps 명령어를 사용하면 이전 버전에서 작동하던 방식과 같이 충돌을 무시할 수 있다. 즉, peerDependency가 맞지 않아도 설치한다. 다만 예기치 못한 에러가 발생할 수 있으니 조심해야 할 듯 하다.


Reference

profile
Why?에서 시작해 How를 찾는 과정을 좋아합니다. 그 고민과 성장의 과정을 꾸준히 기록하고자 합니다.

0개의 댓글