我可以使用Swift包管理器创建本地模块吗?

tay*_*ift 14 build swift swift-package-manager

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

我的想法是,我想要将一些代码与项目的其余部分分开,因此我将其保存在一个文件夹中,Swift编译器将构建它,以便可以像任何其他模块一样导入该代码.

Chr*_*nce 16

使用Swift 4版本工具,有不同的方法可以做到这一点 - 您无需提供标记版本:

.package(url: "<path to repo>", .branch("master")),
Run Code Online (Sandbox Code Playgroud)

另请参阅:https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md

  • 我对此有一个警告:您至少必须将更改提交到您的分支,才能使其对您正在编译的内容可见。看来你也必须做一个“快速包更新”。 (2认同)

Kar*_*ter 14

您可以在Package.swift文件中引用本地目录,但它必须是Git存储库.此外,初始化回购,提交和标记是不够的; 必须将存储库推送到远程swift build才能正常运行.

根据SwiftPM使用指南:

包是Git存储库,标记有语义版本,在其根目录下包含Package.swift文件.初始化包创建了一个Package.swift文件,但为了使它成为一个可用的包,我们需要初始化一个至少有一个版本标签的Git存储库.

在斯威夫特软件包管理器文件还指出:"你可以指定一个URL(或本地路径),以任何有效的斯威夫特打包",并提供了一个示例Package.swift用本地文件参考:.Package(url: "../StringExtensions", "1.0.0").

注意:我编写了答案以澄清Swift Package Manager可以引用本地路径,但路径必须包含带有标记的有效Git存储库.我原来的测试项目指向一个包含.git目录的依赖本地路径,因此它成功构建了swift build.

  • 也许上面是隐含的,但是对于包/存储库的更改,显然必须更新标签/版本才能使版本在本地可用。例如,如果更改之前是 1.0.0,则必须将标签更新为 1.0.1。至少到目前为止这是我的经历。(顺便说一句,我希望这种行为将来会改变。对于纯粹的本地开发来说,这似乎真的很笨重。) (2认同)

rou*_*nak 7

您也可以使用

.package(path: "path to folder")
Run Code Online (Sandbox Code Playgroud)

如果您不希望额外的git repo的开销。

  • 这非常有效,包文件夹不需要是 git 存储库。 (3认同)