package-lock.json 충돌 원인과 해결 방법

이수빈·2022년 4월 10일
9

기타

목록 보기
1/1

✅ package-lock.json은 무엇일까?

package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json.

npm 공식 문서에는 위와 같이 나와있다. 즉, node-modules 트리나 package.json 수정될 때, 자동적으로 생성되는 것이다.

⁉ package-lock.json의 충돌 원인

위에서 제시된 것에서 알 수 있듯 크게 1) package.json의 내용이 다르거나 2) package.json은 같아도 node-modules가 다른 경우이다.

이를 이해하기 위해 package-lock.json이 생성되는 시점인 npm install의 과정을 알아보자.

"npm install" -> package.json을 바탕으로 node-modules 폴더 생성 및 패키지 설치 -> node-modules 폴더의 정보를 package-lock.json에 담기

2) package.json은 같아도 node-modules가 다른 경우는 크게 3가지가 있다.

① npm 버전이 다른 경우
② 의존성을 가진 패키지의 버전이 업그레이드 되는 경우
③ 의존성을 가진 패키지가 의존하는 패키지의 버전이 업그레이드 되는 경우

👍🏻해결 방법

  1. package.json을 수정해서 npm install로 해결
  2. --package-lock-only 옵션으로 해결
  3. npm-merge-driver 툴로 해결

!!! 협업을 하기 전, npm 버전을 미리 통일하자 !!!

❗ 주의할 점

  1. package-lock.json은 형상관리에 포함시켜야 한다.

충돌을 방지하기 위해 이 파일을 git ignore하면 되지 않을까 생각했다. 하지만,

이 파일은 팀에게 정확한 디펜던시 버전을 알려주고, 중복된 라이브러리를 검사해주는 등의 역할을 하기 때문에 올려야 한다.

  1. package-lock.json을 삭제하지 말자..

충돌을 해결하기 위해 이를 삭제하고, 다시 npm install을 하는 방식을 활용했었다. 하지만 이는
디펜던시 트리의 일부분을 의도치 않게 바꿀 수 있기 때문에 삭제하는 방식보다는 위에서 제시한 해결 방법을 활용해야 한다.

0개의 댓글