Swift Package Manager (SPM) 是 Apple 官方推出的依赖管理工具,支持 Swift 项目的代码分发和构建。以下是它的基本使用方式:
1. 创建新包#
# 创建一个新目录并初始化包
mkdir MyPackage && cd MyPackage
swift package init这会生成默认目录结构:
MyPackage
├── Package.swift # 包配置文件
├── Sources/ # 源码目录
└── Tests/ # 测试目录2. 配置包 (Package.swift)#
修改 Package.swift 定义包的基本信息和依赖:
// swift-tools-version:5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.macOS(.v14)], // 支持的平台
products: [
.library(name: "MyLib", targets: ["MyLib"]), // 生成的库或可执行文件
],
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.8.0"), // 添加依赖
],
targets: [
.target(
name: "MyLib",
dependencies: ["Alamofire"] // 目标依赖
),
.testTarget(name: "MyLibTests", dependencies: ["MyLib"])
]
)3. 常用命令#
# 解析和下载依赖
swift package resolve
# 编译项目
swift build
# 运行测试
swift test
# 生成 Xcode 项目(方便在 Xcode 中开发)
swift package generate-xcodeproj
# 运行可执行目标(需在 products 中定义)
swift run MyExecutable4. 添加/管理依赖#
- 直接编辑
Package.swift:在dependencies数组中添加包的 Git 地址和版本。 - 版本控制:
from: "5.8.0":允许 5.8.0 及以上,但低于下一个主版本。.exact("1.0.0"):精确版本。branch: "main":使用特定分支。revision: "a3b5c7d":指定某个提交哈希。
5. 发布自己的包#
推送代码到 Git 仓库:
git init git add . git commit -m "Initial commit" git remote add origin https://github.com/yourname/MyPackage.git git push -u origin main打 Tag 标记版本:
git tag 1.0.0 git push origin 1.0.0其他开发者可通过你的 Git URL 和版本号引入你的包。
6. 本地调试依赖#
若需本地修改依赖包,可在 Package.swift 中使用 path 或 package 参数:
dependencies: [
.package(path: "../LocalPackage"), // 本地路径
.package(url: "https://github.com/SomeRepo/SomePackage.git", branch: "dev") // 特定分支
]注意事项#
- 平台兼容性:在
Package.swift中指定platforms确保依赖支持目标平台。 - 依赖冲突:多个包依赖同一库的不同版本时,SPM 会自动解决冲突(可能选择最新兼容版本)。
- 缓存清理:遇到构建问题时,尝试
swift package clean或删除.build目录。
SPM 与 Xcode 深度集成,也可直接在 Xcode 的 File > Add Package Dependencies 中通过 URL 添加包。