通过 Collections 发现和管理 Swift 包
Discover and curate Swift Packages using Collections
2021年6月10日
一句话判断
Swift Package Collections 是给包管理加了一层策展(Curation)机制——不再是搜索大海捞针,而是跟着 Apple 或社区维护的精选列表走。
这场 Session 讲了什么
Swift Package Manager 在 Swift 5.5 中引入了 Package Collections 功能。简单说,它是一种 JSON 格式的包列表,由可信的第三方维护,包含包名、描述、版本和分类信息。你可以在 Xcode 中添加一个 Collection(比如 Apple 官方的),然后浏览其中精选的包,一键添加到项目。
Session 讲了三件事:如何使用 Xcode 中内置的 Collections 浏览器来发现和添加包;如何创建你自己的 Collection——用 swift-package-collections 命令行工具从 Git 仓库列表生成 JSON 文件;以及如何维护和发布 Collection——可以托管在任何静态文件服务器上。
Apple 官方发布了一个精选 Collection,包含他们推荐的常用开源包。社区和公司也可以发布自己的 Collection,比如一个公司内部的私有包精选列表。
值得深挖的点
Collection 不是索引,是策展
Collection 和 CocoaPods 的 spec 仓库有本质区别。Spec 仓库是全量索引——收录所有包,靠搜索发现。Collection 是精选列表——由维护者挑选和分类,强调质量和推荐。这个设计选择反映了 Apple 对包管理的态度:宁精勿滥。搜索功能仍然存在,但 Collection 提供了一条更可靠的发现路径,尤其适合刚接触 Swift 生态的开发者。
私有 Collection 的企业场景
对于有内部包仓库的企业来说,Private Collection 是一个实用的工具。你可以把公司内部常用的包整理成一个 Collection,新员工入职时添加一个 URL 就能看到所有推荐使用的内部库。这比维护一份 README 文档要好用得多,因为它直接集成在 Xcode 的包管理流程中。
代码片段
用命令行工具生成 Collection
// 用 swift-package-collections 工具生成
// input.json 包含你要收录的包列表
/*
[
{
"url": "https://github.com/Alamofire/Alamofire.git",
"version": "5.4.0"
},
{
"url": "https://github.com/onevcat/Kingfisher.git",
"version": "6.3.0"
}
]
*/
// 终端命令
// swift-package-collections generate input.json -o my-collection.json
在 Xcode 中添加 Collection
// Xcode > File > Packages > Add Package Collection...
// 输入 Collection 的 JSON URL,例如:
// https://developer.apple.com/package-collections/apple/swift-5.5.json
// 或通过命令行
// swift package-collection add <url>
在 Package.swift 中引用 Collection 中的包
// Package.swift 中的依赖声明方式不变
// Collection 只是帮助发现,添加后就是普通的依赖
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"),
.package(url: "https://github.com/onevcat/Kingfisher.git", from: "6.3.0"),
]
最佳实践
包作者: 确保你的包的 Package.swift 有完整的 metadata(description、license、keywords),这样被收录进 Collection 时信息更完整。考虑向 Apple 官方 Collection 提交你的包。
团队维护者: 创建团队内部的 Collection,收录所有推荐使用的包(包括第三方和内部包)。把它托管在团队可访问的静态服务器上,新项目启动时直接添加。
还有什么值得关注
- Collection JSON 格式支持分类(categories)和关键词(keywords),方便浏览时筛选。
- Xcode 13 可以直接从 Collection 页面查看包的 README 和基本文档。
- Apple 发布了 Swift Algorithms 和 Swift Collections 两个官方包,它们会出现在官方 Collection 中。