[FE] package.json & package-lock.json의 차이점

IRE_0546·2021년 9월 10일
1

Q. package-lock.json은 왜 생성될까?

  • package.json 만으로는 정보가 부족하기 때문이다. 이 파일에서는 버전 정보를 저장할 때 version range를 사용하는데, 여기서 사용할 패키지 버전은 <이런 버전이다.>라고 말하는 것이 아니라 <이 버전 이상의 패키지를 사용할 것이다.> 라고 말해주는 것이다. 그렇기에 각자 컴퓨터에서 같은 패키지들을 설치하여 개발환경을 구성할 때 npm install을 진행하더라도 서로 다른 버전의 node 모듈들을 생성하는 경우가 생긴다. 그럼 이럴 때, 오류가 생기거나 난항을 겪을 수 있다. (최신 버전으로 설치되거나, 해당 패키지가 새로운 버전으로 배포되었을 경우에 다른 node_modules 트리가 생성될 수도 있다.)

이것을 피해가기 위해 태어난 것이 package-lock.json이다.

package-lock.josn에는 정확한 버전 명이 적혀있는 것을 확인할 수 있다. 이 파일에서는 node_modules의 구조나 package.json이 수정되고 생성될 때 당시 의존성에 대한 정확하고 구체적인 정보를 품고 자동으로 생성된다. 명령어를 입력하면 태어난다!

package-lock.json이 있을 때, npm install의 동작 방식도 조금 변한다.

이 파일이 존재할 때에는 package.json을 사용하여 노드 모듈을 생성하지 않고, package-lock.json을 사용해서 노드 모듈을 생성한다.

정리: pacakge-lock.json은 개발자들이 동일한 node_module 트리를 생성해서 같은 의존성을 설치할 수 있도록 보장해주는 파일이므로 결론, package-lock.json을 레포지토리에 같이 커밋하자.

profile
Front-end developer, Time is flying never to return ✨

1개의 댓글

comment-user-thumbnail
2022년 4월 14일

잘 읽고갑니다 : )

답글 달기