# Реестр {#registry}
С ростом числа зависимостей увеличивается и время на их устранение. В то время
как другие менеджеры пакетов, такие как [CocoaPods](https://cocoapods.org/) или
[npm](https://www.npmjs.com/), являются централизованными, менеджер пакетов
Swift таковым не является. Из-за этого SwiftPM приходится разрешать зависимости
путем глубокого клонирования каждого репозитория, что может занимать больше
времени и памяти, чем при централизованном подходе. Чтобы решить эту проблему,
Tuist предоставляет реализацию [Package
Registry](https://github.com/swiftlang/swift-package-manager/blob/main/Documentation/PackageRegistry/PackageRegistryUsage.md),
чтобы вы могли загружать только те коммиты, которые вам _действительно нужны_.
Пакеты в реестре основаны на [Swift Package
Index](https://swiftpackageindex.com/) - если вы можете найти пакет там, то он
также доступен в реестре Tuist. Кроме того, пакеты распределены по всему миру с
использованием пограничного хранилища для минимальной задержки при их
разрешении.
## Использование {#usage}
Чтобы настроить реестр, выполните следующую команду в каталоге вашего проекта:
```bash
tuist registry setup
```
Эта команда генерирует файл конфигурации реестра, который включает реестр для
вашего проекта. Убедитесь, что этот файл зафиксирован, чтобы ваша команда также
могла воспользоваться преимуществами реестра.
### Аутентификация (необязательно) {#authentication}
Аутентификация **является необязательной**. Без аутентификации вы можете
использовать реестр с ограничением скорости **1 000 запросов в минуту** на один
IP-адрес. Чтобы получить более высокий предел скорости **20 000 запросов в
минуту**, можно пройти аутентификацию, выполнив команду:
```bash
tuist registry login
```
::: info
Для аутентификации требуется учетная запись
Tuist и проект.
:::
### Разрешение зависимостей {#resolving-dependencies}
Чтобы разрешить зависимости из реестра, а не из контроля исходных текстов,
продолжайте читать в зависимости от настроек вашего проекта:
- Проект Xcode
- Сгенерированный проект с интеграцией пакета Xcode
- Сгенерированный проект с интеграцией пакетов на основе XcodeProj
- Пакет Swift
Чтобы настроить реестр в CI, следуйте этому руководству:
Непрерывная интеграция.
### Идентификаторы реестра пакетов {#package-registry-identifiers}
При использовании идентификаторов реестра пакетов в файле `Package.swift` или
`Project.swift` необходимо преобразовать URL-адрес пакета к соглашению реестра.
Идентификатор реестра всегда имеет вид `{organization}.{repository}`. Например,
чтобы использовать реестр для пакета
`https://github.com/pointfreeco/swift-composable-architecture`, идентификатор
реестра пакета будет `pointfreeco.swift-composable-architecture`.
::: info
Идентификатор не может содержать более одной точки. Если имя репозитория
содержит точку, она заменяется знаком подчеркивания. Например, пакет
`https://github.com/groue/GRDB.swift` будет иметь идентификатор реестра
`groue.GRDB_swift`.
:::