Swift Package Registry
의존성이 늘어날수록 이를 해결하는 데 걸리는 시간도 함께 증가합니다. CocoaPods나 npm 같은 다른 패키지 관리자는 중앙 집중식인 반면, Swift Package Manager는 그렇지 않습니다. 이 때문에 SwiftPM은 각 저장소를 전체 복제(deep clone)하여 의존성을 해결해야 하며, 이는 시간이 많이 소요되고 중앙 집중식 방식보다 더 많은 메모리를 차지합니다. 이를 해결하기 위해 Tuist는 Package Registry 구현을 제공하므로, 실제로 필요한 커밋만 다운로드할 수 있습니다. 레지스트리의 패키지는 Swift Package Index를 기반으로 합니다. 해당 인덱스에서 패키지를 찾을 수 있다면 Tuist Registry에서도 사용할 수 있습니다. 또한 패키지는 전 세계 에지 스토리지를 통해 배포되어 의존성 해결 시 최소 지연 시간을 제공합니다.
사용 방법#
레지스트리를 설정하는 두 가지 방법이 있습니다:
옵션 1: 생성 시 자동 설정(권장)#
Tuist를 사용하여 프로젝트를 생성 중이라면, Tuist.swift 구성에서 registryEnabled 옵션을 설정하여 레지스트리를 활성화할 수 있습니다:
import ProjectDescription
let tuist = Tuist(
project: .tuist(
generationOptions: .options(
registryEnabled: true
)
)
)
이 옵션을 사용하면 tuist generate가 워크스페이스에 레지스트리 구성 파일을 자동으로 생성합니다. 따라서 tuist registry setup를 별도로 실행할 필요가 없습니다.
registryEnabled는 Tuist의 XcodeProj 기반 통합 대신 Xcode의 기본 Swift Package Manager 통합을 통해 의존성을 통합하는 프로젝트에도 레지스트리를 구성합니다. 다만 소스 제어 URL로 선언된 패키지를 레지스트리에서 해결하도록 Xcode를 구성하지는 않습니다. 이를 위해서는 각 머신에서 tuist registry setup를 한 번 실행해야 하며, 자세한 내용은 소스 제어 패키지 해결을 참조하세요.
옵션 2: 수동 설정#
레지스트리를 수동으로 설정하려면 프로젝트 디렉터리에서 다음 명령어를 실행하세요:
tuist registry setup
이 명령어는 프로젝트에서 레지스트리를 활성화하는 레지스트리 구성 파일을 생성합니다. 팀원들도 레지스트리의 혜택을 받을 수 있도록 이 파일을 커밋하세요.
인증(선택 사항)#
인증은 선택 사항입니다. 인증 없이도 IP 주소당 분당 1,000회 요청의 속도 제한으로 레지스트리를 사용할 수 있습니다. 분당 20,000회 요청의 더 높은 속도 제한을 얻으려면 다음 명령어를 실행하여 인증하세요:
tuist registry login
인증에는 Tuist 계정 및 프로젝트가 필요합니다.
의존성 해결#
소스 제어 대신 레지스트리에서 의존성을 해결하려면 프로젝트 설정에 따라 다음 내용을 계속 읽어주세요:
- Xcode project
- Generated project with the Xcode package integration
- Generated project with the XcodeProj-based package integration
- Swift package
CI에서 레지스트리를 설정하려면 다음 가이드를 따르세요: 지속적 통합.
패키지 레지스트리 식별자#
Package.swift 또는 Project.swift 파일에서 패키지 레지스트리 식별자를 사용할 때는 패키지 URL을 레지스트리 규칙에 맞게 변환해야 합니다. 레지스트리 식별자는 항상 {organization}.{repository} 형식입니다. 예를 들어 https://github.com/pointfreeco/swift-composable-architecture 패키지의 레지스트리를 사용하려면 패키지 레지스트리 식별자는 pointfreeco.swift-composable-architecture가 됩니다.
식별자에는 점이 하나 이상 포함될 수 없습니다. 저장소 이름에 점이 있으면 밑줄로 대체됩니다. 예를 들어 https://github.com/groue/GRDB.swift 패키지의 레지스트리 식별자는 groue.GRDB_swift가 됩니다.