Перейти к содержимому

Реестр пакетов Swift

По мере роста числа зависимостей увеличивается и время на их разрешение. В то время как другие менеджеры пакетов, такие как CocoaPods или npm, являются централизованными, Swift Package Manager — нет. Из-за этого SwiftPM приходится разрешать зависимости, выполняя глубокое клонирование каждого репозитория, что может занимать много времени и потреблять больше памяти по сравнению с централизованным подходом. Чтобы решить эту проблему, Tuist предоставляет реализацию Package Registry, позволяющую скачивать только те коммиты, которые вам действительно нужны. Пакеты в реестре основаны на данных из Swift Package Index: если вы можете найти пакет там, он также доступен в реестре Tuist. Кроме того, пакеты распространяются по всему миру с использованием edge-хранилища для обеспечения минимальной задержки при их разрешении.

Использование#

Существует два способа настройки реестра:

Вариант 1: Автоматическая настройка во время генерации (рекомендуется)#

Если вы используете Tuist для генерации проекта, вы можете включить реестр, установив опцию registryEnabled в конфигурации Tuist.swift:

swift
import ProjectDescription
let tuist = Tuist(
project: .tuist(
generationOptions: .options(
registryEnabled: true
)
)
)

При включении этой опции tuist generate автоматически создаст файл конфигурации реестра в вашем рабочем пространстве. Это избавляет от необходимости отдельно запускать tuist registry setup.

Tip

registryEnabled также настраивает реестр для проектов, которые интегрируют зависимости через стандартную интеграцию Swift Package Manager в Xcode, а не через интеграцию на основе XcodeProj в Tuist. Эта опция не настраивает Xcode на разрешение пакетов, объявленных с URL-адресом системы контроля версий из реестра. Для этого выполните tuist registry setup один раз на каждой машине, как описано в разделе Разрешение пакетов из системы контроля версий.

Вариант 2: Ручная настройка#

Чтобы настроить реестр вручную, выполните следующую команду в каталоге вашего проекта:

bash
tuist registry setup

Эта команда генерирует файл конфигурации реестра, который включает реестр для вашего проекта. Убедитесь, что этот файл зафиксирован в системе контроля версий, чтобы ваша команда также могла пользоваться преимуществами реестра.

Аутентификация (необязательно)#

Аутентификация является необязательной. Без аутентификации вы можете использовать реестр с ограничением частоты запросов 1000 запросов в минуту на один IP-адрес. Чтобы получить более высокое ограничение в 20 000 запросов в минуту, вы можете пройти аутентификацию, выполнив команду:

bash
tuist registry login
Note

Для аутентификации требуется учетная запись и проект Tuist.

Разрешение зависимостей#

Чтобы разрешать зависимости из реестра вместо системы контроля версий, продолжайте чтение в соответствии с настройками вашего проекта:

Чтобы настроить реестр в CI, следуйте этому руководству: Непрерывная интеграция.

Идентификаторы реестра пакетов#

При использовании идентификаторов реестра пакетов в файле Package.swift или Project.swift необходимо преобразовать URL-адрес пакета в формат реестра. Идентификатор реестра всегда имеет вид {organization}.{repository}. Например, чтобы использовать реестр для пакета https://github.com/pointfreeco/swift-composable-architecture, идентификатор реестра будет pointfreeco.swift-composable-architecture.

Note

Идентификатор не может содержать более одной точки. Если имя репозитория содержит точку, она заменяется на символ подчеркивания. Например, пакет https://github.com/groue/GRDB.swift будет иметь идентификатор реестра groue.GRDB_swift.