프로젝트의 의존성을 관리하는 javascript의 패키지매니저
yarn을 통해 프로젝트를 설치 하면 생기는 프로젝트 정보와 의존하는 패키지 버전 정보를 담고 있는 파일
패키지 버전 정보는 dependencies , devDependencies 영역에 작성된다.
pakage.json 파일의 dependencies 나 devDependencies 영역을 보면 버전들이 ~1.0.2 / ^1.0.2 이런식으로 표현 되어 있는 것을 본 적이 있을 것이다. 시맨틱 버저닝 규칙에 따라 패키지의 버전 범위를 지정하는 역할을 한다.
# 시맨틱 버저닝
소프트웨어의 버전 변경 규칙에 대한 제안
(major).(minor).(patch)
1.0.2 버전의 경우 1 = major / 0 = minor / 2 = patch
틸트 : patch 버전만 변경 가능
캐럿 : minor , patch 버전 변경 가능 / 하위호환성이 보장 될때 사용한다 / 버전이 1.0.0 미만일때는 틸트와 비슷하게 작동한다.
틸트와 캐럿 방식으로 버전의 범위가 지정이 되기 때문에 package.json 파일을 기준으로 여러명의 개발자가 프로젝트를 다루게 되면 합류 시점에 따라 서로 다른 버전의 패키지를 가져가게 된다(대참사). 이 현상을 방지하기 위해 패키지 파일을 잠궈야 한다. 그 때 필요한 것이 yarn.lock (물론 yarn 을 사용할 경우에만..)
프로젝트 진행 중에 합류하게 되는 개발자는 yarn.lock 파일을 함께 내려받아 yarn install 을 진행하면 package.json의 명시 된 패키지들의 최신 버전을 무시하고 yarn.lock 파일에 기록된 버전 정보로 통일 된 패키지들을 설치 할 수 있다.
협업 시에 패키지 업데이트를 진행한다면 yarn.lock 파일도 꼭 같이 commit push 하길 .. ~
업무를 진행하다 라이브러리 업데이트 후 yarn.lock 파일을 커밋하지 않아 협업에 방해가 되어버렸다. ㅎ
기존에 yarn.lock 파일 존재 이유에 대해 완전히 잘못 알고 있었기 때문이다.
다행이 친절하신 뒷자리 백엔드 개발자분이 알려주셨지만, 잃어버리지 않기 위해 한번 더 정리를 한다.