我可以帮您翻译成中文:Swift包管理器是否支持创建本地模块?

18

我知道 Swift 包管理器可以从 Github 编译代码作为我的项目模块,但我能告诉包管理器编译存储在本地计算机上的代码吗?

我的想法是,我有一些代码想要从我的项目中分离出来,所以我将它保存在一个文件夹中,Swift 编译器会构建它,以便该代码可以像任何其他模块一样被导入。

3个回答

20

您也可以使用

.package(path: "path to folder")

如果您不想要额外的Git存储库开销。这甚至可以是相对路径。


4
这很有效,软件包文件夹不需要是 git 仓库。 - Honghao Z
这看起来是一个很好的解决方案,@rounak!特别是如果它意味着包含该软件包的产品在编译时自动检查软件包位置并寻找更新。它是否在Xcode 12.5中可用?在这种情况下,.package(path: "path to folder")指令放置在哪里? - Anton

16

2
我在这里看到一个警告:你必须至少将你的更改提交到你的分支中,才能让它在你正在编译的内容中可见。似乎你还需要执行 swift package update - Chris Prince

13
您可以在Package.swift文件中引用本地目录,但它必须是一个Git存储库。此外,初始化仓库、提交和标记不足以使swift build正确运行;仓库必须被推送到远程仓库中。
根据SwiftPM 使用指南
“包是带有语义化版本标记的 Git 存储库,在其根目录下包含一个 Package.swift 文件。初始化包会创建一个 Package.swift 文件,但要使其成为可用的包,我们需要使用至少一个版本标记来初始化一个 Git 存储库。” Swift 包管理器文档还指出,“您可以将 URL(或本地路径)指定为任何有效的 Swift 包”,并提供了一个带有本地文件引用的示例Package.swift.Package(url: "../StringExtensions", "1.0.0")
注意:我编辑了答案以澄清Swift Package Manager可以引用本地路径,但该路径必须包含具有标记的有效 Git 存储库。我的原始测试项目指向了一个包含.git目录的依赖本地路径,因此成功使用swift build构建。

没有起作用。我得到了 error: Directory at path ... is not a Git repository 的错误。你可能在你的文件夹中留下了一个多余的 .git 文件夹,这就是为什么包管理器将其视为 git 仓库的原因。 - taylor swift
2
也许这已经是隐含的了,但是对于软件包/仓库的更改,标签/版本显然必须更新才能使版本在本地可用。例如,如果在你进行更改之前它是1.0.0版本,则必须将标签更新为1.0.1版本。至少到目前为止,这就是我的经验。(顺便说一句,希望这种行为在未来会发生变化。这在纯粹的本地开发中似乎非常笨拙。) - Chris Prince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接