익숙하지만 낯선 package-lock.json

JeongHoon Park·2022년 5월 1일
3
post-thumbnail

다룰 내용

npm을 사용한다면 package-lock.json, yarn을 사용한다면 yarn.lock 파일을 본적이 있었을 것이다. 나도 이 파일을 꽤나 오랫동안 봤지만 정확히 왜 만들어지고 어떻게 사용되는지에 대해서 잘 모르고 있기에 이번 기회에 제대로 공부하고 넘어가기로 했다.


왜 만들어지는 것인가?

version range

package-lock.json은 잘 몰라도 package.json은 잘 알 것이다. 우리는 모듈을 설치하고 설치된 모듈의 정보들을 package.json에서 확인한다. 하지만 모듈의 버전은 package.json에 상세히 적혀있지 않아도 된다. package.json에서는 모듈의 버전 정보를 저장할 때 version range를 사용할 수 있기 때문이다. version range는 정확하게 1.0.12 버전을 사용할 것이라고 기입하는게 아닌 1.0.12 버전 이상을 사용할 것이라고 범위를 지정하는 버전 정보 기입 방식이다. 그렇다면 왜 명확하게 기입하지 않고 범위를 통하여 기입하는 것일까? package.json에 패키지 버전을 명확하게 기입하면 패키지의 버그가 수정이 되어도 업데이트가 되지 않아 package.json에 적힌 버전을 손수 수정해야하기 때문이다.

package-lock.json

이제는 왜 package-lock.json이 생겨났는지는 눈치를 챌 수 있을 것이다. 바로 사용하는 모듈의 버전을 명확하게 관리하기 위해 package-lock.json 파일이 생겨났다. 모듈을 version-range로만 관리를 하게된다면 같은 프로젝트를 하는 개발자의 컴퓨터들 안에 모두 다른 버전의 모듈이 설치될 가능성이 있다. 설치된 버전이 다르다면 지원하는 기능도 차이가 생겨 프로덕트에 에러를 초래할 가능성이 크다.


언제 만들어지나?

npm 공식문서에 따르면, package-lock.json은 npm이 node_modules 트리 또는 package.json을 수정하는 모든 작업에 대해 자동으로 생성된다고 한다. 그리고 package-lock.json이 생겨난 이후에는 중간 종속성 업데이트에 관계없이 후속 설치에서 동일한 트리를 생성할 수 있도록 생성된 정확한 트리를 활용한다고 한다. 추가적으로 이 파일은 소스 리포지토리에 커밋하기 위한 것라고 설명하고 있다.


정리

package-lock.json 파일은 package.json 파일에서 모듈들의 버전을 범위로 기입하기 때문에 프로젝트에서 사용하고 있는 정확한 버전을 관리하는 파일이다. 가끔 package-lock.json 파일에 익숙치 않다보니 깃에 올려 관리해야하는지 고민하는 분들이 있었는데 무조건 올려야합니다~!!!!

profile
Develop myself, FE developer!

0개의 댓글