나는 이것들이 하나의 두 가지 질문이라는 것을 알았습니다. 둘 다 대답하겠습니다.
파일을 리포지토리에 커밋해야합니까?
예. ckuijjer의 답변 에서 언급했듯이 마이그레이션 안내서 에서이 파일을 리포지토리 에 포함 시키는 것이 좋습니다 . 왜해야하는지 이해하려면 계속 읽으십시오 .
무엇입니까 yarn.lock
?
각 패키지의 체크섬과 함께 프로젝트의 정확한 종속성 버전을 저장하는 파일입니다. 이것은 의존성에 일관성을 제공하는 원사의 방법입니다.
이 파일이 필요한 이유를 이해하려면 먼저 원래 NPM의 문제가 무엇인지 이해해야합니다 package.json
. 패키지를 설치할 때 NPM은 특정 개정 (semver) 대신 종속성의 허용 된 개정 범위를 저장합니다. NPM은 지정된 범위 내에서 최신 버전의 종속성 종속성을 가져 오려고 시도합니다 (즉, 최신 패치 업데이트가 아님). 이 방법에는 두 가지 문제가 있습니다.
종속성 작성자는 실제로 프로젝트에 영향을 미치는 주요 변경 사항을 도입하면서 패치 버전 업데이트를 릴리스 할 수 있습니다.
npm install
다른 시간에 실행중인 두 개발자 는 서로 다른 종속성 집합을 얻을 수 있습니다. 정확히 동일한 두 환경에서 버그를 재현 할 수없는 원인이 될 수 있습니다. 예를 들어 CI 서버의 빌드 안정성 문제가 발생할 수 있습니다.
반면에 원 사는 최대 예측 가능성의 경로를 따릅니다. 정확한 종속성 버전 yarn.lock
을 저장하기 위해 파일을 작성 합니다 . 해당 파일을 원사로 사용하면에서 버전 을 확인하는 대신 저장된 버전을 사용 합니다. 이 전략은 위에서 설명한 문제가 발생하지 않도록합니다.yarn.lock
package.json
yarn.lock
명령 npm-shrinkwrap.json
으로 만들 수있는 것과 비슷합니다 npm shrinkwrap
. 이 두 파일의 차이점을 설명하는 이 답변을 확인하십시오 .