Swift 新闻之 Package Collections 是什么

Tom Doron 是 Swift 核心团队和 Swift 服务器工作组的成员。他在 Apple 管理着一个研究服务器端 Swift 库的团队。

在 Swift 5.5 中,Swift 包管理器增加了对包集合的支持——一口大小的包管理列表,使发现、共享和采用包变得容易。

在本文出版时,Swift 5.5 可作为预览版从Swift.org和 Xcode 13 种子中获得。Swift 5.5 将于今年晚些时候正式发布。

包集合的目标是改进包生态系统的两个关键方面:

发现很棒的包裹

确定最适合特定工程任务的软件包
包装系列包含并促进了策展的概念。包集合不是浏览长长的网络搜索结果列表,而是将选择范围缩小到来自您信任的策展人的一小部分包列表。包集合服务于许多用例:例如,我们设想 Swift 开发人员社区发布集合,这些集合反映了这些社区生产和使用的优秀包来处理日常任务。教育工作者还可以使用包集合来聚合一组包以与课程材料一起使用。企业可以使用包集合来缩小其内部工程团队的决策空间,专注于一组可信的经过审查的包。

使用集合

包集合使用起来很简单。您可以使用package-collection addSwiftPM 命令行中的新选项添加它:

$ swift package-collection add https://swiftserver.group/collection/sswg.json

Added "Swift Server Workgroup Collection" to your package collections.
Xcode 13(作为预览版提供)还支持使用新的包集合配置屏幕进行包集合。

集合今天可用!

今天已经有新的包集合可用,我们希望 Swift 社区会出现其他包集合。

Swift 服务器工作组

Swift Server Workgroup(Swift 项目的一部分)发布了一个包集合,其中包含工作组孵化的包。SSWG 合集可在以下位置获得:

https://swiftserver.group/collection/sswg.json

SwiftPackageIndex.com

Swift Package Index网站背后的团队创建了动态生成的包集合的第一个实现。该网站允许您下载包含由包所有者创建的所有包的集合。更多信息可以在网站的收藏页面上找到。

Apple 的 OSS Swift 包

Apple 已经发布了一个包集合,其中包括 Apple 发布的一些令人兴奋的 Swift 包,包括Swift Argument Parser、Swift Algorithms和SwiftNIO。Apple 的系列可在以下位置获得:

https://developer.apple.com/swift/packages/collections/apple.json

Xcode 13 预先配置为使用 Apple 包集合。Xcode 的用户可以立即试用!

滚动你自己的收藏
包集合是简单的 JSON 文档。作为 JSON 文件,它们易于发布和共享。您可以将它们发布到网络(或文件服务器)、共享链接或直接与他人共享 JSON 文件。

创建集合

推荐的方式是使用新的包集合生成器工具。该工具获取包 URL 列表,并通过解析包清单文件并在可能的情况下从 SCM 系统获取元数据为它们生成更完整的元数据集。

鉴于以下 packages.json

{
  "name": "My Collection",
  "packages": [
    {
      "url": "https://github.com/user/package.git"
    }
  ]
}

运行以下命令:

$ package-collection-generate packages.json collection.json

将生成一个集合 JSON 文件,如下所示:

{
  "formatVersion": "1.0",
  "name": "My Collection",
  "generatedAt": "2021-06-01T21:28:28Z",
  "packages": [
    {
      "url": "https://github.com/user/package.git",
      "versions": [
        {
          "version": "1.0.0",
          "defaultToolsVersion": "5.1.0",
          "manifests": {
            "5.1.0": {
              "packageName": "MyPackage",
              "products": [
                {
                  "name": "MyProduct",
                  "targets": ["MyTarget"],  
                  "type": { "library": ["automatic"] }
                }
              ],
              "targets": [
                {
                  "name": "MyTarget"
                }
              ],
              "toolsVersion": "5.1.0"
            }
          }       
        }
      ]
    }
  ]
}

就这么简单!

签署收藏

在生成包集合时,可以对它们进行签名以建立真实性并保护其完整性。对集合进行签名是可选的,用户可以使用未签名的集合,但在这样做之前会提示进行确认。

对集合进行签名的推荐方法是使用包集合签名工具,该工具使用代码签名证书对集合进行签名。

例如,使用collection.json我们在上一步中创建的 带有代码签名证书及其私钥的输入,运行以下命令将创建集合的签名版本作为 collection-signed.json文件,将签名嵌入到输出文件本身中。

$ package-collection-sign \
    collection.json \
    collection-signed.json \
    /certs/private.pem \
    /certs/signing.cer

您可以在SwiftPM 的主题文档中找到有关生成和签名集合的更多详细信息。

一旦您的收藏准备就绪,您就可以选择如何分发它。对于与学生或一小群合作者共享,将集合作为附件通过电子邮件发送就足够了。博客作者可以选择将其托管在他们的 Web 服务器上并共享链接。大型开发团队可能决定将其推送到他们的 SCM 系统并从那里访问它。


精品教程推荐


加入我们一起学习SwiftUI

QQ:3365059189
SwiftUI技术交流QQ群:518696470
教程网站:www.openswiftui.com

发表回复