Каждый репозиторий Arkvory — npm-совместимый реестр по адресу https://<host>/npm/<repository>/. Unity Package Manager подключает его как scoped registry, npm публикует в него пакеты. Решение и границы — ADR 0066.
Packages/manifest.json проекта:
{
"scopedRegistries": [
{
"name": "Arkvory",
"url": "https://arkvory.example/npm/games/",
"scopes": ["com.proanima"]
}
],
"dependencies": {
"com.proanima.tools": "1.2.0"
}
}scopes — префиксы имён пакетов, которые Unity берёт из Arkvory; остальные пакеты по-прежнему идут из реестра Unity.
Ключ доступа хранится не в проекте, а в пользовательском .upmconfig.toml (Windows: %USERPROFILE%\.upmconfig.toml, macOS и Linux: ~/.upmconfig.toml):
[npmAuth."https://arkvory.example/npm/games/"]
token = "<ключ Arkvory>"
alwaysAuth = trueДля разработчиков подходит персональный токен только для чтения, для сборочных агентов — сервисный ключ. Окно Package Manager → My Registries показывает пакеты реестра.
В каталоге пакета (рядом с его package.json) — .npmrc:
registry=https://arkvory.example/npm/games/
//arkvory.example/npm/games/:_authToken=${ARKVORY_TOKEN}npm publishnpm publish --tag betanpm dist-tag add com.proanima.tools@1.3.0 latest- Версия неизменяема: исправление публикуется следующей версией.
- Повтор той же публикации после обрыва безопасен.
- Для публикации нужны права записи в репозиторий.
- Имена пакетов Unity — обратный домен в нижнем регистре (
com.company.package);@scopeUnity не поддерживает, а npm-клиенты — да.
- Большие бинарные ассеты, которые часто меняются, удобнее держать в Git LFS, а в пакетах — код и стабильные ресурсы.
- Установку можно направить на шлюз чтения или зеркало; публикация — только на основной шлюз.
- Удаления версий нет: проекты закрепляют версии, и удаление сломало бы их сборки.