文字っぽいの。

文字を書いています。写真も混ざります。

複数のライブラリを含むPackageをSwiftPMで利用する方法。

環境

  • Xcode 13.2.1
  • Swift 5.5.2

やりたいこと

The Composable ArchitectureFirebase iOS SDK のように、XcodeのPackage Dependencies経由で入れるとこんな感じで複数のライブラリが内包されていて、使いたいものを選択して利用するタイプのライブラリ。

f:id:FromAtom:20220104201200p:plain

これを Package.swift でも選択して利用したい。

やりかた

たとえば、The Composable ArchitectureのComposableArchitectureだけを利用したい場合は、こうやって Package.swift に書けば良い。

import PackageDescription

let package = Package(
    name: "SamplePackage",
    platforms: [.iOS(.v13)],
    products: [
        .library(
            name: "SamplePackage",
            targets: ["SamplePackage"]),
    ],
    dependencies: [
        .package(name: "swift-composable-architecture", url: "https://github.com/pointfreeco/swift-composable-architecture", .upToNextMajor(from: "0.32.0"))
    ],
    targets: [
        .target(
            name: "SamplePackage",
            dependencies: [
                .product(name: "ComposableArchitecture", package: "swift-composable-architecture", condition: .when(platforms: [.iOS]))
            ])
    ]
)