스위프트 패키지 매니저 라이브러리 만들기

스위프트 패키지 매니저 라이브러리 만들기

스위프트 패키지 매니저(Swift Package Manager)를 지원하는 방법은 매우 간단합니다. 바로 Package.swift 파일만 추가해주면 됩니다. 코코아팟에서 .podspec 파일을 기억하시나요? 스위프트 패키지 매니저에서는 Package.swift 파일이 그 역할을 대신합니다.

terminal610

YYSimpleAlert 디렉토리 위치로 이동하여 Package.swift 파일을 생성해줍니다.

terminal611

이번에는 open -a Xcode ./Package.swift 명령어를 통해 Xcode 에서 Package.swift 파일을 열도록 하겠습니다.

// swift-tools-version:5.1

import PackageDescription

let package = Package(
    name: "YYSimpleAlert",
    platforms: [
        .iOS(.v13)
    ],
    products: [
        .library(name: "YYSimpleAlert",
                 targets: ["YYSimpleAlert"])
    ],
    targets: [
        .target(name: "YYSimpleAlert",
                path: "YYSimpleAlert/Classes")
    ],
    swiftLanguageVersions: [
        .v5
    ]
)

위 코드를 그대로 붙여넣겠습니다. podspec 파일과는 다르게 친숙한 스위프트 언어로 작성되어 있는 것을 볼 수 있습니다. 코드 맨 위를 보면 알 수 있듯이 Package.swift 는 꼭 swift-tools-version 항목을 명시하면서 시작해야 합니다. 이 버전은 PackageDescription 라이브러리의 버전을 의미합니다.

// swift-tools-version:3.0.2
// swift-tools-version:3.1
// swift-tools-version:4.0
// swift-tools-version:5.0
// swift-tools-version:5.1

지원하는 버전을 보면 Swift 언어의 버전과 비슷하게 관리됨을 알 수 있습니다. 왜냐하면 스위프트 패키지 매니저는 Swift 3 부터 built-in 형식으로 지원되고 있었기 때문입니다. Package – Swift Package Manager 를 참고하면 차후에 Swift, Swift tools 버전을 업데이트 해도 Package.swift 에서 명시한 항목들은 그대로 유지할 수 있다고도 설명하고 있습니다.

  • name: 라이브러리 이름을 나타냅니다.
  • platforms: 지원하는 플랫폼을 나열합니다. .iOS 이외에도 .macOS, .tvOS, .watchOS 를 추가할 수 있습니다.
  • products: 패키지를 정의하는 항목입니다. 패키지에는 Library, Executable 두 가지 타입이 있습니다. Executable 은 사용자에게 실행가능한 패키지를 제공할 때에 사용됩니다.
  • targets: 동일한 패키지 안에서 의존성이 지정된 타겟들을 나열합니다.
  • swiftLanguageVersions: 지원하는 스위프트 언어 버전들을 나열합니다.

detail612

Finder를 통해 프로젝트 경로로 가보겠습니다. Package.swift 가 추가된 것을 확인할 수 있습니다. 이번에는 이 파일을 더블 클릭하여 열어보도록 하겠습니다. Package.swift 파일을 열었는데 해당 파일만 열리는 것이 아니라 Xcode 에서 스위프트 패키지 매니저 라이브러리로 인식되어 열리게 됩니다.

detail613

스위프트 패키지 매니저를 상징하는 박스 모양 아이콘도 생긴 것을 확인할 수 있습니다.