Swift软件包管理器

Swift软件包管理器与Swift 3.0一起正式发布,是一种在macOS和Linux上创建Swift库和应用程序的新方法。 它可以帮助您管理依赖关系,并允许您轻松地构建,测试和运行Swift代码。

重要的是要注意,作为Swift 3,Swift软件包管理器针对主机平台进行编译。 换句话说,目前您将无法为iOS,watchOS或tvOS构建或使用软件包。

我们走吧!!

开始之前,请确保已安装Swift 3.0或更高版本。 Swift 3包含在Xcode 8.0+中,因此,如果您具有Xcode 8或更高版本,则可以开始使用。 实际上,您甚至不需要Xcode即可完成本教程的大部分内容。 您只需从swift.org安装Swift 3。

打开一个新的终端窗口,然后键入swift package 。 您将看到命令概述。 您将使用的主要命令是:

  1. swift package init以创建新包
  2. swift package update以更新swift package update的依赖关系
  3. swift package generate-xcodeproj为您的软件包生成一个Xcode项目

要了解Swift包管理器,您将创建一个命令行应用程序,该应用程序使用一个小型库来为任何国家/地区打印表情符号标志。 您将从创建可执行程序包开始。 这些程序包是命令行应用程序。 Swift Web应用程序也属于此类。

通过在终端中运行以下命令来创建Flag可执行程序包:

  mkdir标志 
cd标志
swift package init --type可执行文件

当前目录Flag在运行swift package init时很重要,因为它成为生成的包的名称。 您会在输出中看到一些为您创建的文件和文件夹。 花一些时间来熟悉项目结构:

  1. Package.swift具有您的程序包描述,还将具有您程序包的依赖性。
  2. 顾名思义, Sources/是所有Swift源文件的存放位置。 还为您创建了一个main.swift文件。 这将是您的应用程序的入口点。 现在,它将向终端打印“ hello world ”。
  3. Tests/将包含您可以使用XCTest编写的单元测试。 您将很快为代码编写测试!

返回到“终端”窗口并运行以下命令:

 快速构建 

这将构建软件包并在.build/debug/Flag处创建一个可执行文件。 通过运行以下命令执行应用程序:

  .build /调试/标志 

您应该看到Hello, world! 打印到屏幕上。

恭喜:您已经创建并构建了您的第一个Swift包!

创建图书馆

为了完成为一个国家生成表情符号标志的实际工作,您将创建一个名为FalcoFlags的库。 然后,您可以在Flag应用程序中使用此库。

通过在终端中输入以下命令,将其Flag包并创建一个库包:

 光盘.. 
mkdir FalcoFlags
cd FalcoFlags
swift package init --type库

这次代替main.swift ,您将获得FalcoFlags.swift 。 该文件以及Sources/文件夹中的任何其他文件将与您的库一起导入。 实际上,库和可执行文件之间的区别在于main.swift的存在。

这次您还将获得一个示例测试。 用swift test运行swift test 。 然后,Swift软件包管理器将编译您的库并运行测试。

在文本编辑器中打开FalcoFlags.swift并将其内容替换为以下内容:

 公共结构国家{ 
 公开让步代码:字符串 
 公共初始化(代码:字符串){ 
  self.code = code.uppercased() 
  } 
 公共var emojiFlag:字符串{ 
 返回“ \ u {1f1f5} \ u {1f1f7}” 
  } 
  } 

在这里,您可以实现一个Country结构,该结构可以使用ISO国家/地区代码初始化。 emojiFlag属性返回该代码的标志。 现在,您将实现最低要求以允许您编写测试。

还要注意,这里的所有内容都标记为public ,因此使用FalcoFlags模块的代码对每个成员都是可见的。 😀

现在打开FalcoFlagsTest.swift并将其内容替换为以下内容:

在这里,您将执行三个测试。 您创建了三个不同的国家,然后断言它们具有正确的表情符号标志。

运行测试:

 快速测试 

您应该看到执行了三个测试,并且三个测试失败。 看来您还有一些工作要做! :]

现在您的测试失败了,是时候让它们通过了。

表情符号标志的工作方式实际上非常简单:给定国家代码(例如AT),您需要将每个字母转换为所谓的区域指示符。 这些是🇦和🇦。 将它们放在一起时,您会得到表情符号标志!

切换到FalcoFlags.swift并将以下方法添加到Country结构:

  func RegionalIndicatorSymbol(unicodeScalar:UnicodeScalar)-> UnicodeScalar?  { 
让大写A = UnicodeScalar(“ A”)!
让regionIndicatorSymbolA = UnicodeScalar(“ \ u {1f1e6}”)!
让距离= unicodeScalar.value-大写A.value
返回UnicodeScalar(regionalIndicatorSymbolA.value +距离)
}

在这里,您可以利用以下事实:字母和区域指示符在Unicode表中彼此相邻,而逻辑上彼此相邻的值。 因此,如果A为65,B为66,而🇦为127462,则just仅为127463。因此要将字母P转换为区域指示符,您只需要获取A与P之间的距离,然后将其相加即可到🇵。

那是困难的部分。 现在您有了这种方法,剩下的就很容易了! 将emojiFlag属性替换为以下内容:

 公共var emojiFlag:字符串{ 
return code.unicodeScalars.map {String(regionalIndicatorSymbol(unicodeScalar:$ 0)!)} .joined()
}

您将国家/地区代码转换为每个字母的数组,然后将每个字母转换为其区域指示符并将它们重新组合在一起。 这会给你旗子!

再次运行测试,并观察所有三个测试通过。

创建Swift包的下一步是将您的代码提交到Git并用版本标记。 由于这是您的第一个版本,因此将其称为1.0.0

执行以下命令来创建您的Git存储库并标记它:

  git初始化 
git添加
git commit -m“初始提交”
git标签1.0.0

创建可执行文件

现在您有了表情符号标志库,您可以将其作为依赖项添加到标志可执行文件包中。

浏览回到Flag目录并打开Package.swift文件。 其内容如下所示:

 导入PackageDescription 
 让包=包( 
名称:“标志”

每个Swift软件包都有这样的描述。 您将使用的最重要的参数将是dependencies参数。 用以下内容替换包装说明:

 让包=包( 
名称:“标志”,
依赖项:[
.Package(URL:“ ../FalcoFlags”,“ 1.0.0”)
]

在上面,您声明Flag软件包将具有单个依赖项,其URL为../FalcoFlags ,并且版本应为1.0.0

该版本应使用语义版本控制。 简而言之,这意味着该版本应类似于MAJOR.MINOR.PATCHMAJOR版本适用于任何向后不兼容的更改; MINOR版本适用于以向后兼容的方式进行的更改; 而PATCH版本用于错误修复。

在几乎所有情况下,您都希望通过错误修复或什至较小的改进自动将库更新到较新版本。 方便地,Swift软件包管理器允许您执行此操作。 将软件包描述更改为以下内容:

 让包=包( 
名称:“标志”,
依赖项:[
.Package(URL:“ ../FalcoFlags”,majorVersion:1)
]

Swift软件包管理器提供了更多方法来精确指定要更新到的库的确切版本。

构建包:

 快速构建 

您可以看到,Swift软件包管理器已根据您的依赖性要求精心选择了1.0.0版并进行了安装。 打开main.swift文件,并将内容替换为以下代码:

 进口FalcoFlags 
 让参数= CommandLine.arguments 
 如果arguments.count!= 2 { 
打印(“用法:标记[iso国家/地区代码]”)
}其他{
让代码=参数[1]
让国家= Atlas.Country(代码:代码)
打印(country.emojiFlag)
}

在这里,您可以导入库,然后为给定的第一个命令行参数打印表情符号标志。 如果未提供任何参数,则输出帮助消息。

再次构建应用程序并运行它:

 快速构建 
./.build/debug/Flag US

现在,您应该在终端窗口中看到美国国旗!

对您的应用程序满意后,就该发布它了。 上一次构建应用程序,这次使用优化的发行版配置:

 快速构建-配置发布 

现在,您可以像这样运行应用程序的发行版:

  ./.build/release/Flag PR 

现在,您可以压缩./.build/release/Flag文件,并与您的朋友,家人或任何人共享它! :]