コンテンツへスキップ

Swift Package Registry

依存関係の数が増えると、その解決にかかる時間も増大します。CocoaPodsやnpmなどの他のパッケージマネージャーは中央集権型ですが、Swift Package Managerはそうではありません。そのため、SwiftPMは各リポジトリのディープクローンを実行して依存関係を解決する必要があり、時間がかかり、中央集権型のアプローチよりも多くのメモリを消費します。この問題に対処するため、TuistはPackage Registryの実装を提供しており、実際に必要 なコミットのみをダウンロードできます。レジストリ内のパッケージはSwift Package Indexに基づいています。そこでパッケージが見つかる場合、そのパッケージはTuist Registryでも利用可能です。さらに、パッケージはエッジストレージを使用して世界中に分散されており、解決時のレイテンシを最小限に抑えます。

使用方法#

レジストリのセットアップには2つの方法があります。

オプション1: 生成時の自動セットアップ(推奨)#

Tuistを使用してプロジェクトを生成している場合、Tuist.swift構成でregistryEnabledオプションを設定することでレジストリを有効にできます。

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

このオプションを使用すると、tuist generateによってワークスペース内にレジストリ構成ファイルが自動的に作成されます。これにより、tuist registry setupを個別に実行する必要がなくなります。

Tip

registryEnabledは、TuistのXcodeProjベースの統合ではなく、XcodeのデフォルトのSwift Package Manager統合を通じて依存関係を統合するプロジェクトに対してもレジストリを構成します。ただし、ソースコントロールURLで宣言されたパッケージをレジストリから解決するようにXcodeを構成するわけではありません。そのためには、各マシンで一度tuist registry setupを実行してください。詳細はソースコントロールパッケージの解決をご覧ください。

オプション2: 手動セットアップ#

レジストリを手動でセットアップするには、プロジェクトのディレクトリで次のコマンドを実行します。

bash
tuist registry setup

このコマンドは、プロジェクトでレジストリを有効にするレジストリ構成ファイルを生成します。チーム全体がレジストリの恩恵を受けられるよう、このファイルをコミットしてください。

認証(任意)#

認証は任意です。認証なしでも、IPアドレスあたり毎分1,000リクエストのレート制限でレジストリを利用できます。毎分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

識別子にはドットを2つ以上含めることはできません。リポジトリ名にドットが含まれている場合は、アンダースコアに置き換えられます。例えば、https://github.com/groue/GRDB.swiftパッケージのレジストリ識別子はgroue.GRDB_swiftとなります。