IT/React + TypeScript

package-lock.json 또는 yarn.lock 왜 필요한가?

차가운남자 2020. 1. 6. 19:00

리액트로 프로젝트를 개발하며 자주 볼수있는

  • npm을 이용하면 package-lock.json
  • yarn을 사용하면 yarn.lock

왜? 자동으로 파일이 생성될까?

패키지 매니저

패키지 관리를 위해 npm을 사용하든 yarn을 사용하든 해당 프로젝트의 메타 정보는 package.json 파일을 통해 관리가 됩니다.  package.json 파일에는 해당 프로젝트가 의존하고 있는 모든 패키지 이름과 버전이 나열되어 있는데요.

일반적으로 쓰이는 패키지들은 dependencies (react,react-dom 등)항목에,
개발할 때만 필요한 패키지들은 devDependencies(Jest,cypress 등) 항목에 명시됩니다.

개발자들의 설치 날짜에 패키지 버전 다름

개발자가 여러명이 있는 개발팀에서 프로젝트에 투입되는 시간에 다르다면,

예를 들어 react 버전이 다르다면

개발자a : 16.1.1
개발자b : 16.2.2
개발자c : 16.3.3
개발자d : 16.4.4

설치 버전이 다를수 있습니다. 만약 이렇게 된다면 개발자 a는 제대로 작동하지만 개발자 b에게서는 작동이 안되는 경우가 발생이 되어질수 있습니다. 이러한 상황은 패키지 매니저에서 패키지 잠금이 지원되지 않던 시절에 매우 골칫거리였던 문제이며 이것을 해결하기 위한 패키지 잠금이 필요한것입니다.

package-lock.json이나 yarn.lock과 같은 패키지 잠금 파일에는 프로젝트에 패키지에 최초로 추가될 당시에 정확히 어떤 버전이 설치가 되었는지를 기록됩니다.

주의 사항

함께 개발하는 프로젝트에서 패키지 잠금역할은 중요합니다.

최초에 셋업하는 개발자가 git에 패키지 잠금파일을 반드시 올려서 다른 개발자들이 패키지가 꼬이지 않도록 신중해야 됩니다.

마치면서

왜 패키지 매니저에 잠금 기능이 있는지에 대해서 알아보았고 자세한 내용은 밑에 참고 사이트에 가보시면 좋을듯 합니다.