TIL - legacy-peer-deps
4 min read

TIL - legacy-peer-deps

--legacy-peer-deps는 무엇을 의미할까


What I Learned

서론

본론

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). - in npm github blog

해석하자면 다음과 같다.

--force로 재시도하여 충돌을 우회하거나 --legacy-peer-deps 명령으로 종속성을 완전히 무시할 수 있습니다. (이 동작은 버전 4-6과 유사합니다.)

--legacy-peer-deps 관련 에러는 npm 7버전 이후로 나온 에러로, 기존에는 --legacy-peer-deps로 설치하는 것처럼 처리된 모양이다. 물론 경고는 표시되었지만, 오류 없이 설치했었다.

7버전 이후로는 에러처리되며, 두 선택지 중 하나를 선택할 수 있고, 그것이 --force와 --legacy-peer-deps이다.

--force

--force를 통해 설치를 하면, 모든 충돌을 무시하고 최신 버전을 설치한다. 즉, peer dependencies 충돌을 무시하고 강제로 패키지를 설치한다. 때문에 의존성 버전 호환이 되지 않는 경우가 생길 수 있다.

--legacy-peer-deps

기존 방식대로 경고만 출력하고, 7이상 버전에 도입된 peer dependencies 검증을 비활성화 한다. 즉, 4-6 버전 처럼 peer dependencies 충돌만을 무시하고 설치한다. --force는 모든 충돌을 무시하지만 본 커맨드는 어디까지나 peer dependencies 충돌을 무시한다.

결론

만일 해당 에러 문구가 출력 된다면, 본인 상황에 맞게 커맨드를 입력해야 할 것이다.

특징--force--legacy-peer-deps
적용 범위모든 의존성 충돌 및 경고, 기존 패키지 덮어 쓰기 등 광범위peerDependencies 충돌에만 국한
위험성프로젝트 의존성이 충돌할 가능성이 높음상대적으로 위험성이 낮음
주요 사용처극단적인 디버깅 상황
레거시 프로젝트서 사용
npm 7 이전 버전대로 설치하고 싶은 경우