文森說技術

iOS, Web Development Notes
- , ,

透過 Swift Pacakage Manager 使用 Apple 的 swift-format

最近開始把相依的工具能盡量收進 Swift Package Manager 就收進去,這次的對象是 swift-format 。由於這篇是一個快速的筆記文,因此會省略掉很多細節。

執行環境

  • Xcode: 12.0(12A7209)
  • Swift: 5.3

swift-format

GitHub 主頁面:

Apple 官方的針對 Swift 調整格式以及 lint 工具,原先可以透過 brew 來安裝

缺點

iOS 的專案可以用許多相依管理工具,於是時間一長,就會發現單一個專案裡面就已經多種並用,例如

  • Homebrew
  • CocoaPods
  • Carthage
  • Mint
  • RubyGems

多工具導入之下造成管理不便, CI 的工作流程也必須全部跑過一次。有的是專案範圍的相依,有的是系統範圍的相依,感覺真的不是很好。

對策

雖然無法 100% 摒除,策略上就以能用原生 Swift Package Manager 的話就用為主要的方向。

導入專案

Package.swift

swift-format 是 cli 工具,因此導入非常簡單,只要在 dependencies 中加入,也不需要加入任何的 target

1
2
3
4
5
6
7
8
9
10
// swift-tools-version:5.3
import PackageDescription

let package = Package(
// ...
dependencies: [
.package(url: "https://github.com/apple/swift-format.git", .branch("swift-5.3-branch")),
],
// ...
)

執行方式

由於要執行 Swift Pacakage Manager 的範圍的 cli 工具,因此要加上 swift run ,避免執行到原本用 Homebrew 裝的版本。和 RubyGems 的 bundle exec 有異曲同工的作用。

1
swift run swift-format

後面的一些 options 就和原先的執行方式一樣,所以在 CI 的執行設定基本上只要加上 swift run 即可。

如果覺得這篇對你有幫助,歡迎幫忙分享給其他人 😀