React 관련 프로젝트를 진행하다보면 package.json과 package-lock.json을 쉽게 볼 수 있는데, npm i를 하면 자연스레 생겨나는 녀석이기 때문에 평소엔 공부해야지..생각만 했었다. 그러나, 이번에 레거시 프로젝트의 react 버전을 17에서 18로 올려주면서 알아야될 필요성을 느껴 정리를 해본다.
둘 다 의존성에 대한 정보를 가지고 있으며,
package.json은 의존성의 범위 (버전 이상 range)
package-lock.json은 명확한 버전에 대한 정보를 가지고 있다.
package.json은 이런 식으로 ~버전 이상을 의미한다(11.11.5 이상)
이는 같은 프로젝트를 npm i로 설치하더라도 package-lock.json이 누구는 있고 누구는 없다면 같은 프로젝트라도 다른 결과가 발생할 수 있는 것이다. (내 컴퓨터에서는 되는데 누구 컴퓨터에서는 안되는 현상..)
package-lock.json은 의존성 트리에 대한 정확한 정보를 가지고 있으므로 git commit시 원격으로 같이 push 해주게 되면 협업 시 일관된 코드를 공유하는 데 큰 도움이 되므로 반드시 같이 push 해주자.
참고
https://dev-ellachoi.tistory.com/65
https://hyunjun19.github.io/2018/03/23/package-lock-why-need/
https://velog.io/@songyouhyun/Package.json%EA%B3%BC-Package-lock.json%EC%9D%98-%EC%B0%A8%EC%9D%B4