Version: 2023.2
언어: 한국어
패키지 상태 및 라이프사이클
전역 캐시

종속성 및 해결

Package Manager 창에서 작업하는 경우 여러 소스에서 패키지를 설치(레지스트리, 로컬 폴더 또는 타르볼, Git URL, 이름)할 수 있습니다. 하지만 패키지 관리자는 이러한 소스에서 패키지를 원활하게 설치하는 동안, 먼저 설치할 버전을 결정하기 위해 일련의 계산을 수행해야 합니다. 또한 선택한 패키지를 지원하기 위해 설치할 다른 패키지 및 버전도 결정해야 합니다.

직접 종속성

Package Manager 창을 통해 설치할 패키지 버전을 선택하면 프로젝트 매니페스트에 “종속성”을 추가하게 됩니다.프로젝트가 작동하기 위해 특정 패키지의 특정 버전이 필요하다는 선언입니다.프로젝트에 종속성을 추가하려면 <project-root>/Packages/manifest.json 파일의 dependencies 프로퍼티에 package-name@package-version 형식의 패키지 및 버전에 대한 레퍼런스를 추가하십시오.프로젝트가 직접 종속되어 있으므로 이를 “직접” 종속성이라고 합니다.

간접 종속성

또한 패키지가 작동하려면 다른 패키지가 필요합니다. 이를 “간접” 또는 중간적 종속성이라고 부릅니다. 패키지 개발자는 개발 과정에서 이러한 종속성을 패키지 매니페스트 파일의 종속성 프로퍼티에 추가합니다(<package-root>/package.json). 예를 들어 아래 다이어그램에서 alembic@1.0.7 패키지에는 timeline@1.0.0 패키지에 대한 종속성이 있으므로, 타임라인 패키지는 “간접 ” 종속성입니다. 반면에 프로젝트에는 cinemachine@2.6.0alembic@1.0.7 패키지에 대한 종속성이 있으므로, 둘 다 “직접” 종속성입니다.

직접 종속성과 간접 종속성을 보여주는 다이어그램
직접 종속성과 간접 종속성을 보여주는 다이어그램

버전 오버라이드

패키지 버전을 종속성으로 추가하는 경우 해당 버전이 반드시 패키지 관리자가 설치하는 버전일 필요는 없습니다. 이는 직접 또는 간접 종속성인지 여부에 관계없이 패키지 관리자가 프로젝트의 모든 종속성을 고려해야 하기 때문입니다. 예를 들어 이 경우 요청된 XR Plugin Management 패키지는 4.0.3 버전이었습니다. 하지만 설치된 패키지 관리자는 4.0.6 버전인데, 이는 정보 메시지(B)에 표시된 것처럼 다른 패키지가 상위 버전에 종속되었기 때문입니다.

세부 정보 패널(A)에서 정보 버튼을 클릭하면 요청한 버전 대신 이 버전이 설치된 이유를 설명하는 텍스트 상자(B)가 나타납니다.
세부 정보 패널(A)에서 정보 버튼을 클릭하면 요청한 버전 대신 이 버전이 설치된 이유를 설명하는 텍스트 상자(B)가 나타납니다.

종속성 그래프

패키지 관리자는 한 번에 하나의 패키지 버전만 설치할 수 있으므로 종속성 그래프를 구성해야 합니다. 이 그래프는 프로젝트에 대한 모든 직간접 종속성의 목록입니다. 종속성 그래프에 따라 설치할 각 패키지 버전이 결정됩니다.

잠금 파일

패키지 관리자가 모든 버전 충돌을 성공적으로 해결하면 다음과 같은 두 가지 이유로 잠금 파일에 해결 방법을 저장합니다.

  • 결정론적 분명성: 매번 동일한 패키지가 안정적으로 설치되도록 합니다.
  • 효율성: 종속성 그래프를 다시 계산하는 데 필요한 시간과 리소스를 줄입니다.

패키지 상태 및 라이프사이클
전역 캐시