プロジェクトを開いたりブランチを切り替えたりすると、SPM がパッケージを解決する方法の悲しい状況を目にするなど、迷惑な状況を経験したことがある人は多いでしょう。SPM に対する CocoaPods の利点の 1 つは、依存関係チェックアウトがプロジェクトとともにリポジトリに直接保存されることです。これにより、CI で依存関係をダウンロードして解決するために時間を無駄にすることなく、任意のコミットからプロジェクトを簡単に開始できるようになります。この記事では、SPM を使用して依存関係チェックアウトをリポジトリに保存し、CocoaPods よりも適切に実行する方法を説明します。
始める前に、将来のソリューションの要件のリストを定義しましょう。
- 私たちは引き続き Swift パッケージのパラダイムの中で生き続けます
- 外部パッケージの依存関係がローカルになる
- 外部依存関係をネイティブに複製するためのメカニズムが必要
- プロジェクトに必要なファイルのみを依存リポジトリにローカルに保存します。
- 入力が完了したら、実装を開始できます。
依存関係のクローンを作成することから始めましょう。これを行うには、別のローカル パッケージを作成し、必要な依存関係をすべて Package.swift に追加します。
// swift-tools-version: 5.7
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "VendorPackages",
platforms: [
.iOS(.v15),
.macOS(.v12),
],
products: [
.library(
name: "VendorPackages",
targets: ["VendorPackages"]
),
],
dependencies: [
.package(
url: