你们中的许多人都经历过令人烦恼的情况——您打开一个项目或切换一个分支,然后看到 SPM 如何解析包的悲伤画面。与 SPM 相比,CocoaPods 的优点之一是依赖项检出与项目一起直接存储在存储库中。这使您可以轻松地从任何提交启动项目,而不是在 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: