범위 지정 레지스트리를 통해 Unity 기본 레지스트리 이외의 레지스트리를 사용하여 자체 패키지를 호스트할 수 있습니다. 범위 지정 레지스트리를 이용하면 패키지 관리자가 항상 패키지를 하나의 레지스트리에만 매핑하므로, 네트워크 상황에 관계없이 일관된 결과를 얻을 수 있습니다.
예를 들어 일부 Unity 패키지를 호스트하는 자체 서버를 설정하려는 경우 한 레지스트리가 일시적으로 이용 불가 상태가 되면 잘못된 레지스트리에서 패키지를 가져올 수 있습니다. 이는 패키지 관리자가 항상 동일한 순서로 레지스트리를 검색하더라도 마찬가지입니다. 하지만 자체 서버에 대해 범위 지정 레지스트리를 설정하면 패키지가 항상 하나의 레지스트리에만 매핑되므로, 네트워크 상황에 관계없이 일관된 결과를 얻을 수 있습니다.
Unity 패키지 관리자는 npm 프로토콜에 기반한 레지스트리를 지원합니다. 기존의 npm 레지스트리 서버는 언제든지 사용할 수 있지만, Verdaccio를 사용하면 설정 항목이 많지 않아서 더욱 빠르게 설정할 수 있습니다.
서버를 설정하고 나면 범위 지정 레지스트리로 포함할 수 있습니다. 이는 npm이 사용하는 것과 동일한 개념입니다.
일부 npm 레지스트리 서버는 /all
웹 API 경로를 통한 모든 패키지 검색을 지원하지 않습니다. 패키지 관리자 검색 API는 설정된 범위 지정 레지스트리에 기반하여 예전 npm API 프로토콜을 지원합니다. 또한 모든 퍼블리시된 패키지의 메타데이터를 반환하는 HTTP 엔드포인트를 포함합니다(예: https://registry.my-company.com/-/all
).
패키지 관리자 API를 사용하여 이용 가능한 패키지를 표시하는 툴이 있는 경우 레지스트리가 예전 프로토콜을 지원하지 않을 때 예기치 못한 결과를 얻을 수 있습니다. 예를 들어 여기에서는 Packages Manager 창의 All packages 탭이 해당하는 범위 지정 레지스트리의 패키지를 표시하지 않습니다. 하지만 이러한 제한은 패키지 해상도에는 적용되지 않기 때문에 패키지를 범위 지정 레지스트리에서 프로젝트 매니페스트로 수동으로 추가할 수 있습니다.
프로젝트 매니페스트에서 범위 지정 레지스트리를 설정하려면 범위 지정 레지스트리 설정 오브젝트의 배열을 가져오는 scopedRegistries 속성을 사용하십시오. 각 오브젝트에는 해당 범위 지정 레지스트리에 매핑할 각 패키지 이름 패턴에 따라 name, url 위치 및 scopes 리스트가 들어 있습니다. 패키지 관리자가 페치할 레지스트리를 결정하면 패키지 name을 scopes 값과 비교하여 scopes가 가장 일치하는 레지스트리를 찾습니다.
예를 들어 아래의 프로젝트 매니페스트에는 두 개의 범위 지정 레지스트리, 즉 Main과 Tools가 있습니다.
{
"scopedRegistries": [
{
"name": "Main",
"url": "https://my.company.com/registry",
"scopes": [
"com.my-company", "com.my-company.tools.foo"
]
},
{
"name": "Tools",
"url": "https://my.company.com/tools-registry",
"scopes": [
"com.my-company.tools"
]
}
],
"dependencies": {
"com.unity.cinemachine": "1.0.0",
"com.unity.2d.common": "1.0.0",
"com.unity.2d.animation": "1.0.0",
"com.my-company.bar": "1.0.0"
}
}
사용자가 com.my-company.bar 패키지를 요청하면 패키지 관리자는 com.my-company.* 네임스페이스가 해당 이름과 가장 일치하는지 확인한 후 Main 레지스트리에서 패키지를 페치합니다.
사용자가 com.my-company.tools.foo 패키지를 요청하면 Main 레지스트리에 정확하게 일치하는 네임스페이스를 가진 범위가 있습니다.
사용자가 com.my-company.tools.animation 패키지를 요청하면 패키지 관리자는 com.my-company.* 네임스페이스가 해당 이름과 가장 일치하는지 확인한 후 Tools 레지스트리에서 패키지를 페치합니다. Main 범위와 일치하더라도 com.my-company.* 네임스페이스는 가까운 매치는 아닙니다.
사용자가 com.other-company.bar 패키지를 요청하면 패키지 관리자는 범위 지정 레지스트리에서 일치하는 항목을 찾지 않으며, 기본 레지스트리에서 패키지를 페치합니다.
프로젝트 매니페스트에서 scopedRegistries 속성을 사용하여 범위 지정 레지스트리를 설정합니다. scopedRegistries 속성에는 모든 레지스트리를 나타내는 항목(오브젝트) 배열이 들어 있습니다.
각 레지스트리 오브젝트에는 고유한 name, 위치(url), 네임스페이스 배열, 또는 scopes가 들어 있습니다. 패키지 관리자는 해당 범위를 사용하여 패키지 이름과 레지스트리를 매칭합니다.
속성 | JSON 타입 | 설명 |
---|---|---|
name | String | 사용자 인터페이스에 표시되는 범위 이름입니다. Package Manager 창의 패키지 세부 정보 뷰에 이 이름이 표시됩니다. 예: "name": "Tools"
|
url | String |
npm 호환 레지스트리의 URL입니다. 예: "url": "https://my.company.com/tools-registry"
|
scopes | 문자열 배열 | 패키지 이름과 정확히 일치하는 항목 또는 네임스페이스로 패키지 이름에 매핑할 수 있는 범위 배열입니다. 예: "scopes": [ "com.my-company", "com.my-company.tools.foo" ] 참고: 이 타입의 설정은 패키지가 역순 도메인 이름 표기법을 준수한다고 가정합니다. 따라서 com.unity가 com.unity.*와 동일하게 간주됩니다. |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.