잠금 파일에는 프로젝트에 대한 패키지 관리자의 종속성 해결의 결과가 포함됩니다. 패키지 관리자는 패키지 종속성 그래프를 해결할 때 잠금 파일을 사용하여 결정론적 결과를 제공합니다. Unity 패키지 관리자는 성공적인 해결을 계산하면 해당 해결을 프로젝트의 Packages
폴더에 packages-lock.json
라는 JSON 파일로 저장합니다. 프로젝트 매니페스트 또는 변경 가능 패키지의 매니페스트(내장 또는 로컬 폴더에서 설치)에 대한 모든 수정은 잠재적으로 패키지 관리자가 해결된 패키지 버전을 다시 계산하도록 만들 수 있습니다. 하지만 잠금 파일의 패키지가 종속성 버전과 해결 전략에서 암시된 범위를 충족하는 한 패키지는 해당 버전으로 계속 고정됩니다.
예를 들어 다음은 잠금 파일의 일반적인 항목입니다.
"com.unity.textmeshpro": {
"version": "2.0.1",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0"
},
"url": "https://packages.unity.com"
},
etc.
패키지 관리자가 충돌하는 간접 종속성을 해결할 때 잠긴 패키지를 최대한 많이 재사용하려고 시도합니다. 이는 후속 종속성 해결이 동일한 종속성 집합에 대해 동일한 결과를 생성하도록 보장합니다. 또한 패키지 다운로드, 추출 또는 복사와 같이 시간이 많이 소요되는 작업을 최소화합니다.
잠긴 패키지만 포함하는 솔루션이 없는 경우 패키지 관리자는 위험도가 가장 낮은 업그레이드가 포함된 패키지 집합을 선택합니다. 즉 마이너 또는 메이저 업그레이드보다 패치 업그레이드를 선호하고, 메이저 업그레이드보다 마이너 업그레이드를 선호합니다 실제로 업그레이드 위험도를 커스터마이즈할 수 있습니다. 자세한 내용은 해결 전략 커스터마이즈를 참조하십시오.
간접 종속성 버전을 강제로 새로 고치려면 잠금 파일을 삭제하십시오.
잠금 파일을 수동으로 수정하지 마십시오. 패키지 관리자가 잠금 파일을 만들고 유지하므로, 그렇게 하면 파일에 대한 모든 변경 사항을 덮어씁니다.
잠금 파일을 소스 컨트롤 아래에 두면 동일한 패키지 집합을 일관되게 재현하여 시간이 지나도 다른 시스템에서 프로젝트의 일관성을 유지할 수 있습니다.
기본적으로 패키지 관리자는 종속성 그래프를 성공적으로 계산하면 잠금 파일을 생성하거나 업데이트합니다. 예상치 못한 결과가 표시되면 프로젝트 매니페스트에서 enableLockFile 프로퍼티를 `false’로 설정하여 잠금을 비활성화할 수 있습니다. 하지만 잠금 파일을 비활성화하면 패키지 관리자가 Git URL 패키지를 다시 복제하므로, 성능이 저하되고 추가 네트워크 사용량이 발생합니다. 또한 두 가지 해결 사이에서 최신 커밋을 원격 Git 저장소로 푸시하면 비결정적론적 결과가 생길 수 있습니다.