WWDC 2018:细说 Swift 包管理工具 (Swift Package Manager)

WWDC 2018 Session 411: Getting to Know Swift Package Manager

查看更多 WWDC 18 相关文章请前往 老司机x知识小集xSwiftGG WWDC 18 专题目录

作者:KANGZUBIN

目前,在 macOS/iOS 开发中,我们通常使用 CocoaPods 或 Carthage 等非官方工具来管理项目工程中对第三方开源库的依赖。

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

SwiftPM 于 2016 年随 Swift 3.0 一起发布,已经两年多了,今年 WWDC 2018 专门开了一个 Session 用来介绍如何使用它,我们一起来了解一下吧。

0. 为什么要有 SwiftPM ?

目前已经有很多优秀包管理器用于分享和复用代码,对于为什么要为 Swift 专门开发一个新的包管理工具(Why a new package manager for Swift?),苹果的工程师在该 Session 中主要总结了如下几个理由:

  • 一个 Swift 的跨平台构建系统

首先,Swift 是一个跨平台开发语言,所以我们需要一个强大的跨平台工具用于构建 Swift 代码,它可以用一致的方式轻松配置代码,然后在 Swift 所支持的所有平台上运行。SwiftPM 包含其自己的完整构建系统,使你能够仅在一个工具中完成代码的编译测试运行等。

  • 权威规范的包管理工具

苹果希望在 Swift 项目中提供一个官方权威统一规范的包管理器,通过定义一个分发 libraries(库)的通用标准,让我们尽可能方便地在 Swift 生态系统中与他人分享 Swift libraries(库)。

  • 核心库之外的代码复用

在开发过程中,核心标准库有时候不能满足我们的需求,我们可能会想扩展它,但为了保证核心库 API 的简洁,不可能随意往里添加内容。因此,有一个强大的包管理器就可以很容易地将这些扩展作为 package 来分发和共享,而不必将它们放到核心库中,而那些好的扩展可以随着时间的推移持续地获得社区的支持并且变得越来越标准化。

  • 充分利用 Swift 的优势

SwiftPM 本身是用 Swift 编写的,它可以充分利用 Swift 的强大功能和设计理念,通过与 Swift 语言和核心库项目密切合作,可以创建出更加出色的包管理器功能。

  • 包含在 Swift 工具链和 Xcode 中

SwiftPM 是 Swift 开源项目中的一部分,它被包含在每个 Swift 工具链中,同时它也包含在 Xcode 的每个 Release 版本中,你可以很方便地使用它。

1. SwiftPM 基本概念

  • 什么是 Packages?

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

  • 什么是 Products?

在 package(包)中的每一个 target(目标)最终可能构建成一个 library(库)或者一个 executable(可执行文件)作为其 product(产品)。库是包含可以被其他 Swift 代码引用的模块,可执行文件是一段可以被操作系统运行的程序。

对于 SwiftPM 的一些基本概念,例如:Modules、Packages、Products、Dependencies、Targets 等,在 Swift.org 官网已经有非常详细的描述和定义,另外,也可以参见《Swift Package Manager 快速入门指引》这篇文章的翻译,我们这里不再赘述。

2. 如何使用 SwiftPM ?

如上文所述,Swift Package Manager 提供了一个完整的系统用于构建 libr

你可能感兴趣的:(WWDC 2018:细说 Swift 包管理工具 (Swift Package Manager))