이모저모

package-lock.json 이란 무엇일까?

눙엉 2022. 1. 2. 23:21

내가 사용하는 라이브러리의 버전을 확인하려고 package.json을 찾아본 적은 있지만 package-lock.json은 뭐하는 파일인지 몰라서 검색해보고 쉽게 정리해보려고 한다.

package-lock.json이란?

npm을 사용해서 package.json 파일 또는 node_modules 트리를 수정하면 자동으로 생성되는 파일이다.

package.json을 통해서 라이브러리 버전을 확인할 수 있는데 package-lock.json이 존재하는 이유는 뭘까?

 

package.json과 package-lock.json의 차이는 뭘까?

흔히 라이브러리 버전을 확인하려면 package.json을 보고 버전을 확인하곤 한다.

package.json에 적혀있는 버전은 특정 버전이 아니라 버전의 범위(version range)를 의미한다.

예를 들어  ^16.9.0 버전에서 ^은 npm install <package> 명령어의 기본 설정으로 이후 버전을 허용하지만 메이저 버전은 그대로 유지하라는 것이다.

package.json 파일로 npm install을 할 때 해당 라이브러리의 minor, patch가 publish 되면 동일한 package.json 파일로 npm install을 하게 되어도 다른 버전을 설치할 수 있다. 대부분의 경우 문제가 없겠지만 간혹 업데이트된 버전이 오류를 발생시킬 수 있다.

package-lock.json 파일은 파일이 작성된 시점의 의존성 트리를 가지고 있어서 이 파일의 버전을 보고 npm install을 할 수 있도록 하게 한다.

 

결론.

여러사람들과 협업을 할 때 모두 같은 개발환경을 구성하기 위해서 package-lock.json도 공유를 해야 한다.

 

여러 글을 읽어 보았지만 큰 흐름은 이해하겠지만 자세히는 아직 모르겠다..