Unity 프로젝트 매니페스트
Unity는 패키지 관리자를 통해 패키지를 관리합니다. 패키지 관리자는 프로젝트 매니페스트 파일을 읽어 필요한 패키지를 계산하고 로드합니다. 이 문서에서는 프로젝트 매니페스트에 대한 설명과 활용법을 다룹니다.
프로젝트 매니페스트란?
- 위치: Unity 프로젝트 루트 폴더 내의
Packages
폴더에 위치한manifest.json
파일입니다. - 형식: JSON(JavaScript Object Notation) 형식으로 작성됩니다.
JSON 구조
프로젝트 매니페스트의 구조는 다음과 같은 프로퍼티를 포함합니다:
프로퍼티 | 타입 | 설명 |
---|---|---|
dependencies | 오브젝트 | 프로젝트에 필요한 패키지 목록으로, 직접 종속성만 포함됨 |
enableLockFile | 부울 | 잠금 파일 사용 여부를 설정합니다 (기본값: true) |
resolutionStrategy | 문자열 | 간접 종속성 버전 업그레이드 전략을 설정합니다 (기본값: lowest) |
scopedRegistries | 오브젝트 배열 | 커스텀 레지스트리를 추가하여 자체 패키지를 호스트할 수 있습니다 |
testables | 문자열 배열 | Unity 테스트 프레임워크에 추가할 패키지 이름을 나열합니다 |
예제
다음은 manifest.json
의 예시입니다:
{ "scopedRegistries": [{ "name": "My internal registry", "url": "https://my.internal.registry.com", "scopes": [ "com.company" ] }], "dependencies": { "com.unity.package-1": "1.0.0", "com.unity.package-2": "2.0.0", "com.company.my-package": "3.0.0", "com.unity.my-local-package": "file:/my_package_folder", "com.unity.my-local-tarball": "file:/my_package_tarball.tgz", "com.unity.my-git-package": "https://my.repository/my-package.git#v1.2.3" }, "enableLockFile": true, "resolutionStrategy": "highestMinor", "testables": [ "com.unity.package-1", "com.unity.package-2" ] }
해결 전략 설정
- lowest: 요청된 버전을 그대로 사용합니다.
- highestPatch: 동일한 Major 및 Minor가 있는 가장 높은 버전으로 업그레이드합니다.
- highestMinor: 동일한 Major가 있는 가장 높은 버전으로 업그레이드합니다.
- highest: 요청된 버전에 대한 가장 높은 버전으로 업그레이드합니다.
활용 및 응용 예시
- 패키지 버전 관리: 패키지의 버전을 명시함으로써 프로젝트의 안정성을 높일 수 있습니다.
- 커스텀 레지스트리 사용: 내부 패키지를 호스트하기 위한 커스텀 레지스트리를 설정하여 팀 간의 패키지 관리 효율성을 높입니다.
- 잠금 파일 사용: 다양한 개발 환경에서 일관된 종속성을 유지하기 위해 ‘enableLockFile’을 설정할 수 있습니다.
이러한 기능들은 Unity 프로젝트의 패키지 관리를 체계적으로 관리하는 데 매우 중요합니다. manifest.json
파일을 적절히 구성함으로써 프로젝트의 종속성과 기능을 확장할 수 있습니다.