官方文档:https://docs.swift.org/package-manager/PackageDescription/PackageDescription.html#package-dependency

Swift Package Manager(Swift 包管理器,一般简称 SwiftPM 或者 SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易。该工具可以帮助我们编译和链接 Swift packages(包),管理依赖关系、版本控制,以及支持灵活分发和协作(公开、私有、团队共享)等。

swiftPM发展历程

  • SwiftPM 于 2016 年随 Swift 3.0 一起发布。
  • 2018年在 WWDC上专门开了一个 Session 用来介绍如何使用它
  • xcode 12.5之后,支持了swiftPM功能

官方推荐swiftPM的理由:

  • 一个 Swift 的跨平台构建系统
    • Swift 是一个跨平台开发语言,所以我们需要一个强大的跨平台工具用于构建 Swift 代码,它可以用一致的方式轻松配置代码,然后在 Swift 所支持的所有平台上运行。SwiftPM 包含其自己的完整构建系统,使你能够仅在一个工具中完成代码的编译测试运行等。
  • 权威规范的包管理工具
    • 苹果希望在 Swift 项目中提供一个官方权威统一规范的包管理器,通过定义一个分发 libraries(库)的通用标准,让我们尽可能方便地在 Swift 生态系统中与他人分享 Swift libraries(库)。
  • 核心库之外的代码复用
    • 在开发过程中,核心标准库有时候不能满足我们的需求,我们可能会想扩展它,但为了保证核心库 API 的简洁,不可能随意往里添加内容。因此,有一个强大的包管理器就可以很容易地将这些扩展作为 package 来分发和共享,而不必将它们放到核心库中,而那些好的扩展可以随着时间的推移持续地获得社区的支持并且变得越来越标准化。
  • 充分利用 Swift 的优势
    • SwiftPM 本身是用 Swift 编写的,它可以充分利用 Swift 的强大功能和设计理念,通过与 Swift 语言和核心库项目密切合作,可以创建出更加出色的包管理器功能。
  • 包含在 Swift 工具链和 Xcode 中
    • SwiftPM 是 Swift 开源项目中的一部分,它被包含在每个 Swift 工具链中,同时它也包含在 Xcode 的每个 Release 版本中,你可以很方便地使用它。

SwiftPM中的Packages

  • 一个 package(包)由 Swift 源码文件和一个清单文件组成
  • 这个清单文件被称为 Package.swift,它使用 PackageDescription 模块来定义包的名称和内容
  • 一个包通常有一个或者多个 targets(目标),每个 target 指定一个 product(产品)并声明一个或者多个 dependencies(依赖)

参考文档