npm audit fix란? —force 옵션을 줘도 되는가?

먼저 npm을 통해 패키지를 설치하다보면 종종 아래와 같은 메시지를 확인하게 된다.
notion image
ERESOLVE unable to resolve dependency tree
표시된 대로 종속성 충돌(잘못되고 잠재적으로 손상된 종속성)이 있으므로 --force 또는 --legacy-peer-deps를 사용하는 것이다.
설명처럼 이렇게 옵션을 주고 설치하면 해결된다.
npm i eslint-plugin-import -D --legacy-peer-deps
notion image
26개의 취약점이 발견된다. high가 21개나 되는데
주의가 필요하지 않은 문제를 해결하려면 다음을 실행하라면서 npm audit fix를 요구한다. 그런데 이렇게 해도 해결되지 않을 때가 있다.
npm audit fix
notion image
notion image
high가 계속 나타난다. npm auduit fix —force로 모두 해결하라고 했었는데 그 방법을 써야할 것 같다. 항상 이렇게 npm audit fix나 —force 옵션을 주고 실행해서 해결한 다음 개발을 진행했었는데 npm에 대해 너무 무심했던 것 같다. 어떤 기능을 하는 것인지 알아보려고 한다.
 

npm audit은 dependency tree의 보안 취약점과 해결방안을 제공해준다. 프로젝트에 구성된 dependency에 대한 설명을 기본 레지스트리에 제출하고 알려진 취약성에 대한 보고서를 요청합니다

npm audit fix는 npm audit으로 나온 결과를 자동적으로 고쳐주는 것이다.
—force의 경우에는 아래의 문서에 따르면
If the chain of metavulnerabilities extends all the way to the root project, and it cannot be updated without changing its dependency ranges, then npm audit fix will require the --force option to apply the remediation. If remediations do not require changes to the dependency ranges, then all vulnerable packages will be updated to a version that does not have an advisory or metavulnerability posted against it.
 
notion image
최상위 종속성의 SemVer-major를 업데이트하는 명령어라고 볼 수 있다. SemVer은 The semantic versioner for npm를 뜻한다. 이것은 major, minor, fetch로 나뉜다.
 
각각은 아래의 사이트에서 정의를 찾아볼 수 있다. major는 호환되지 않는 버전으로 바꾸는 버전을 의미하므로 major를 바꾸게 되면 기존 버전의 기능이 호환되지 않아 문제가 발생할 수 있다는 것을 유념해야할 것이다.
 
  1. MAJOR version when you make incompatible API changes,
  1. MINOR version when you add functionality in a backwards compatible manner, and
  1. PATCH version when you make backwards compatible bug fixes.