[npm] 갑자기 package-lock.json 이 변경사항에 찍힐 때

With·2021년 10월 13일
1

Trouble Shooting

목록 보기
3/4

package-lock.json ?

회사 프로젝트를 본격적으로 시작하기 위해, upstream에서 fork 한 내 origin에서 git clone을 하고 평소와 마찬가지로 npm install을 했는데 익숙하지 못한 변경내역이 발생했다.

package-lock.json 파일은 보통 패키지 잠금 파일로 불리는데, 이 파일에는 프로젝트에 패키지에 최초로 추가될 당시에 정확히 어떤 버전이 설치가 되었는지 기록된다. 그리고 npm install을 통해 node_modules를 설치하면 npm registry에 등록되어 있는 최신 버전의 패키지를 설치하는 것이 아니라 잠금파일에 기록되어 있는 버전으로 설치된다. 이것을 통해 프로젝트 협업 시, 각각의 개발자가 동일한 버전의 패키지를 설치할 수 있게 되는 것이다. 그리고 package-lock.json은 새로운 패키지가 갱신, 제거할때마다 package.json 파일과 동기된다.

문제

문제는 npm install 을 했을 때, package-lock.json 파일만 변경 내역으로 인식하고 있다는 것이다. 이 문제의 원인은 많은 이유가 있을 수 있겠지만, 종합해보면 package.json 파일과 package-lock.json 파일이 서로 동기되어 있지 않기 때문이다. (package.json 파일을 직접 수정한다거나)

그래서 내가 clonenpm install을 했을 때 동기되어 있지 않던 두개의 파일이 동기화가 되면서 package-lock.json 파일만 업데이트 되는 것이다. package-lock.jsonpackage.json 파일을 기준으로 업데이트 되기 때문이다.

해결 방법

근복적인 문제해결 방법은 두개의 파일을 동기화시키는 것이다. 다만, 그 동기화 작업이 당장 어렵다면, git ci를 통해서 node_modules 를 설치하는 방법도 있다.

git ci는 Lock 파일을 변경하고 패키지를 설치하는 대신 에러를 내고 작업을 중단해버린다. 즉, 이 명령어는 npm install 과 달리 package-lock.json 파일을 변경하지 않는다. 그래서 package-lock.json 파일로 인한 커밋 충돌을 예방 할 수 있다.

참조

profile
주니어 프론트엔드 개발자 입니다.

0개의 댓글