패키지 관리자 창에서 작업할 때 여러 소스(레지스트리, 로컬 폴더 또는 타르볼, Git URL, 이름)를 통해 패키지를 설치할 수 있습니다. 하지만 패키지 관리자는 이러한 소스를 통해 패키지를 원활하게 설치하지만 먼저 설치할 버전을 결정하기 위해 일련의 계산을 수행해야 합니다. 또한 선택한 패키지를 지원하기 위해 설치할 다른 패키지와 버전을 결정해야 합니다.
직접 종속성
패키지 관리자 창을 통해 설치할 패키지 버전을 선택하면 프로젝트 매니페스트에 ’종속성’이 추가됩니다. 이는 프로젝트가 작동하기 위해 특정 패키지의 특정 버전이 필요하다는 선언입니다. 프로젝트에 종속성을 추가하려면 패키지 및 버전에 대한 레퍼런스를 package-name@package-version 형식으로 <project-root>/Packages/manifest.json 파일의 종속성 프로퍼티에 추가합니다. 프로젝트가 직접 종속되어 있기 때문에 이를 ‘직접’ 종속성이라고 합니다.
간접 종속성
패키지가 작동하려면 다른 패키지도 필요할 수 있습니다. 이를 ‘간접’(또는 전환) 종속성이라고 합니다. 패키지 개발자는 개발 중에 패키지 매니페스트 파일(<package-root>/package.json)의 종속성 프로퍼티에 이를 추가합니다. 예를 들어 아래 다이어그램에서 alembic@1.0.7 패키지에는 timeline@1.0.0 패키지에 대한 종속성이 있으므로 타임라인 패키지는 ‘간접’ 종속성이 됩니다. 반대로 프로젝트에는 cinemachine@2.6.0 및 alembic@1.0.7 패키지에 대한 종속성이 있으므로 둘 다 ‘직접’ 종속성입니다.
버전 오버라이드
패키지 버전을 종속성으로 추가하는 경우 해당 버전이 반드시 패키지 관리자가 설치하는 버전일 필요는 없습니다. 패키지 관리자는 프로젝트의 모든 종속성(직접 또는 간접)을 고려해야 하기 때문입니다. 다음 예시에서 요청한 XR Plugin Management 패키지는 4.0.3 버전입니다. 그러나 다음 정보 메시지(B)에 명시된 대로 다른 패키지가 더 높은 버전에 종속되어 있기 때문에 패키지 관리자가 4.0.6 버전을 설치했습니다.
종속성 그래프
패키지 관리자는 한 번에 하나의 패키지 버전만 설치할 수 있으므로 종속성 그래프를 구성해야 합니다. 이 그래프는 프로젝트의 모든 직접 및 간접 종속성 목록입니다. 종속성 그래프에 따라 설치할 각 패키지의 버전이 결정됩니다.
잠금 파일
패키지 관리자가 모든 버전 충돌을 해결하면 다음 두 가지 이유로 해결 방법을 잠금 파일에 저장합니다.