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