9.1.8 SwiftPM 5.4 发布说明
2 分钟阅读
原文链接: https://docs.swift.org/latest/documentation/packagemanagerdocs/5.4/
9.1.8 SwiftPM 5.4 发布说明
SwiftPM 5.4 包含若干改进,这些改进都以指定工具版本 5.4 为前提,属于选择性启用。
可执行目标
指定 5.4 工具版本的 Swift 包现在可以把目标显式声明为可执行目标,从而可以在包代码中使用 @main 关键字。
做法是在包清单中用 executableTarget() 声明该目标,告诉 SwiftPM 无论它是否包含基名为 main 的文件,都应把这个目标视为可执行的。
编译器在编译可执行模块时仍然适用它一贯的规则,因此单个目标不能同时包含名为 main.swift 的文件和另一个使用 @main 的文件。
自动发现测试
自动发现测试现在在所有平台上都是默认行为,不再需要 LinuxMain.swift,后者已被弃用。如果该文件仍然存在,依然会被尊重。
更灵活的工具版本格式
Package 清单文件现在允许在工具版本注释之前使用任意组合的前导空白字符。这让清单格式的编排更灵活。
具体来说,当且仅当指定的版本 ≥ 5.4 时,每个清单文件中的 Swift 工具版本说明现在可以接受 swift-tools-version 两侧任意组合的水平空白字符。例如,//swift-tools-version: 5.4 和 // swift-tools-version: 5.4 都是有效的。
Package 清单现在能识别所有 Unicode 行终止符。这确保了在众多使用 ASCII 或 Unicode 编码的非 Unix 类平台上编辑和/或构建清单时解析的正确性。
包依赖缓存
Swift Package Manager 现在按用户缓存包依赖仓库,从而减少网络流量,并提高后续使用同一个包时的依赖解析性能。
缓存的默认位置因平台而异,但可以用新增的 --cache-path 选项控制。SwiftPM 还会在 ~/.swiftpm 创建一个指向默认缓存位置的符号链接。
编译后的包清单现在也按用户缓存。这可以用新增的 --manifest-cache 选项覆盖。