본문 바로가기
개발/그 외

라이브러리 버전의 디테일을 관리하는 package-lock.json

by 안뇽! 2022. 12. 22.
반응형
npm install을 하면 package-lock.json을 참조해서 설치하고자 하는 패키지가 어떤 버전의 패키지에 의존성이 있는지 확인해서 함께 설치해줌

서버를 다시 풀받고 로컬에서 실행하니 켜지지 않았다.

 

히스토리 King이신 옆팀 백엔드 개발자분께 도움을 청했다.

 

package-lock.json이 문제였다.

 

그러면서 이런말씀을 하셨다.

 

package-lock.json은 백엔드에만 국한된 것이 아니라서, 준열님도 공부하면 좋을 것 같은데?

 

그럼 package-lock.json이 무엇일까

 

package-lock.json

package.json 파일에는 라이브러리들의 버전이 적혀있는데, package.json은 협업에 있어서 라이브러리 버전 관리의 제 역할을 완벽하게 수행하지 못한다.

 

예를 들면 package.json에 근거하여 node_modules가 생성될 때 이런 상황이 발생할 수 있다.

 

김코딩 : 아 왜 안되지??
박코딩 : 난 잘되는데??
몇시간뒤..
김코딩 : 너 typescript 버전 몇이야?? 난 4.16.2인데
박코딩 : 응? 난 4.16.1인데??

 

package-lock.json은 node_modules 트리 혹은 package.json이 수정될 때 자동으로 생성된다고 한다.

 

그리고 package-lock.json이 존재할 때에는, package.json을 사용하여 node_modules를 생성하지 않고, package-lock.json을 사용하여 node_modules를 생성한다.

 

그리고 package-lock.json에는 의존성 트리에 대한 모든 정보가 담겨 있다.

 

package-lock.json은 package.json이 챙기지 못하는 디테일을 챙겨주는 파일이다.

 

때문에 협업자들끼리 package-lock.json이 변경되면 사용하는 라이브러리의 버전이 어느새 변경될 수 있는 것이다.

 

나의 경우에는 package-lock.json이 main의 package-lock.json(동작하는 라이브러리의 버전들이 적힌 파일)과 상이하여 로컬에서 동작하지 않았던 것이다.

 


참고

https://velog.io/@songyouhyun/Package.json%EA%B3%BC-Package-lock.json%EC%9D%98-%EC%B0%A8%EC%9D%B4

https://hyunjun19.github.io/2018/03/23/package-lock-why-need/

 

반응형