更好的iOS项目:如何使用Mint管理工具

2018年7月3日, 沃尔夫冈·卢茨 Wolfgang Lutz)

在“更好的iOS项目”系列中,我们介绍了各种工具和环境,这些工具和环境对于更方便,高效地处理iOS项目很有用。

自从Swift语言(相对于其他语言而言,最近发布)以来,已经添加了许多工具来支持使用它进行开发。

我们需要SwiftLint整理代码,使用SwiftFormat来应用格式和编码准则,使用SwiftGen摆脱所有依赖于字符串的API调用,并使用Sourcery来生成大量的代码,否则我们将不得不手工编写。

但是所有这些工具都是第三方的,因此,我们需要自己进行管理。

有关如何安装这些工具的一些方法是:

  • 下载二进制文件
  • 通过CocoaPods安装
  • 通过自制软件安装

这些方法有一些缺点:

  • 可能不支持安装方法:并非所有依赖项都可以通过CocoaPodsHomebrew作为二进制AND 获得 ,因此最终会导致系统混合。
  • 您依赖于发布到所使用的管理器的更新,这可能需要一些时间。
  • 您无法指定要使用的确切版本。
  • 您可能需要使用大型二进制Blob使您的存储库混乱。

您想要为您,团队成员和CI Server使用完全相同的工具版本 。 这样,所有工具在整个开发团队中的行为方式都相同,每个人都将收到相同的警告并生成相同的代码,从而避免了行为上的差异。

您不想在要审阅您的应用的那一天被迫更新工具,因此您需要能够安装特定版本,而不必使用该工具的最新版本。 。 如果您使用的工具的最新版本存在错误(通过Sourcery随我们提供),这有助于避免出现问题。

您希望能够为每个项目安装特定版本 。 不同的项目有不同的同步需求。 在某些情况下,将工具作为全局依赖项是行不通的。

Homebrew是提供终端工具的非常好的工具。 安装其他工具是一种魅力。 但是:对于大多数工具, Homebrew不再可以选择安装工具的特定版本。 由于您无法返回到以前的版本,因此使团队成员之间的版本保持同步的唯一方法是安装可用的最新版本。 对于拥有大量项目的代理机构和其他外部开发人员来说,这绝对是不可行的。 有人总是会忘记升级Brew。 通过创建自己的Homebrew龙头可以安装自己的内部工具,但是这会增加一些额外的开销和维护。

Mint是一个依赖项管理器,在内部使用Apple的Swift Package Manager(SPM)来构建swift工具。 如果该工具是使用SPM编写的(这是能够使用CLI的外部依赖项的方法,请参阅@JohnSundell的这篇很棒的文章),通常可以使用mint来构建它,而不会出现问题。 到目前为止, SwiftLintSwiftFormatMarathonXcodeGenSourcery是可以使用mint安装的一些最相关的工具。 下一个版本(v6.0)发行时,将可以安装SwiftGen

您可以找到几种在GitHub上安装mint的方法。

一种简单的方法是运行

 酿造薄荷 

要仅运行软件包,请键入

 薄荷运行 

例如

 薄荷运行yonaskolb / xcodegen 

这将安装并运行最新版本。

要运行特定版本,可以添加发布标签或分支或git commit哈希:

 薄荷运行yonaskolb/xcodegen@1.8.0 

您还可以将诸如git@github.com:yonaskolb/Mint.git类的git URL传递给install命令。 这样,您还可以从其存储库中安装和运行内部的非公共工具。

要安装特定版本供以后使用,可以使用mint install

 薄荷安装yonaskolb/xcodegen@1.8.0 

这将安装给定的版本(并将其链接到usr/local/bin )。

要定义项目中使用的版本,可以将一个名为Mintfile的文件添加到项目的根文件夹中。 在其中,您可以定义要使用的工具及其版本:

  #这是一条评论 
krzysztofzablocki/Sourcery@0.13.1
领域/SwiftLint@0.25.1
yonaskolb/XcodeGen@1.8.0
nicklockwood/SwiftFormat@0.33.7

对于在此文件夹中运行的不包含版本规范的命令, mint将在Mintfile中查找版本。

所以,跑步

 薄荷运行xcodegen 

带有Mintfile的计算机将安装并运行版本“ 1.8.0”,而不是更新的版本。 请注意,您可以忽略已经在Mintfile中定义的用户部分(例如“ yonaskolb /”)。

跑步

 薄荷靴 

安装Mintfile中定义的版本(不链接它们),以便您准备从Xcode的构建脚本内部使用这些版本。

在Number42,我们始终在项目中包含一个名为bootstrap.sh的脚本,该脚本会执行随后运行该项目所需的最基本的设置调用。 克隆(或拉出)项目后,只要开箱即用,在大多数情况下,调用sh bootstrap.sh就能解决大部分问题。 对于iOS和Web项目,我们使用相同的方法。 在本系列的下一集中,我们将仔细研究引导脚本。

这是脚本的摘录,它显示了我们如何安装mint和运行mint bootstrap

  #!/ bin / shbrew updatefunction install_current { 
回声“试图更新$ 1”
#https://docs.travis-ci.com/user/reference/osx/
#避免错误
酿造升级$ 1 || brew install $ 1 || 真正
酿造链接$ 1
} if [-e“ Mintfile”]; 然后
install_current薄荷
薄荷靴
科幻

Mint将工具安装到/usr/local/lib/mint ,因此如果出现问题,您可以在此处删除文件。

感谢Yonas Kolb在发布之前阅读了本文。 梅兰妮·克洛斯(Melanie Kloss)的插图。


最初于 2018 年7月3日 发布在 www.number42.de 上。