npm install --force 와 npm install --lagacy-peer-deps 차이
npm install 에러
github actions 로 자동배포를 설정해뒀는데, 배포가 되지않아 확인해봤더니
npm install 에서 unable to resolve dependency tree 에러가 발생했다.
메세지를 천천히 읽어보면, 의존성 트리에 충돌이 났다는 내용으로
@toast-ui/react-editor@2.5.4 에서는 react 16.0.0 버전을
root project에서는 react 17.0.1 버전을 사용해 버전을 맞춰주라는 내용이다.
쭉쭉 내려서 23번째줄부터 보면 --force 나 --legacy-peer-deps 옵션을 사용하라고 친절하게 알려준다.
어떤 의미의 옵션인지 살펴보자.
에러 원인
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.
번역: 피어 종속성 자동 설치는 npm 7에 도입된 흥미로운 새 기능입니다. npm(4-6)의 이전 버전에서 피어 종속성 충돌은 버전이 호환되지 않지만 오류 없이 종속성을 설치한다는 경고를 표시했습니다. npm 7은 자동으로 해결할 수 없는 업스트림 종속성 충돌이 있는 경우 설치를 차단합니다.
에러 원인이라고 하긴 좀 그렇지만 npm 버전 7에서 새로운 기능이 등장하면서부터 발생한다.
npm 7으로 업데이트되면서 peer dependencies 자동 설치가 등장했다.
이전 4~6 버전에서는 경고만 표시했지만 7 버전은 충돌이 있는 경우 에러로 판단해 설치를 중단한다.
그래서 peer dependencies 충돌이 생겼을 때 어떻게 할 것이냐를 두가지 옵션으로 정할 수 있다.
--force 나 --legacy-peer-deps 옵션이 여기에 사용된다.
차이점
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를 사용하여 충돌을 우회하거나 --legacy-peer-deps 명령을 사용하여 피어 종속성을 완전히 무시할 수 있는 옵션이 있습니다(이 동작은 버전 4-6과 유사함)
--force 는 충돌하는 peerDependencies가 루트 프로젝트에 설치하고
--legacy-peer-deps 는 peerDependencies가 자동으로 설치 되는 기능을 무시한다.
블로그 글을 보면 대부분 --legacy-peer-deps를 사용하는 것 같은데, --force가 더 낫다는 의견이 많다고 한다.
참고
https://velog.io/@gth1123/npm-cli-flag-force-and-legacy-peer-deps
'Node.js' 카테고리의 다른 글
모노레포 세팅하기 - yarn workspace (0) | 2023.03.04 |
---|---|
[Node.js] multer-s3를 이용한 AWS s3 파일 업로드 (0) | 2022.01.20 |
[Node.js] forever 사용하기 (0) | 2021.12.23 |
[Node.js] UUID 생성하기 (0) | 2021.11.10 |