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 MyExecutable
4. 添加/管理依赖 #
- 直接编辑
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 添加包。