我可以使用 Swift 包管理器制作本地模块吗?
Can I make a local module with the Swift Package manager?
我知道 Swift 包管理器可以将 github 中的代码编译为我的项目的模块,但我可以让包管理器编译存储在我计算机本地的代码吗?
我的想法是我有一些代码想从我的项目的其余部分中分离出来,所以我将它保存在一个文件夹中,Swift 编译器将构建它以便可以导入该代码像任何其他模块一样。
您可以在 Package.swift
文件中引用本地目录,但它必须是 Git 存储库。此外,初始化回购、提交和标记是不够的;必须将存储库推送到远程,swift build
才能正常运行。
Packages are Git repositories, tagged with semantic versions, containing a Package.swift file at their root. Initializing the package created a Package.swift file, but to make it a usable package we need to initialize a Git repository with at least one version tag.
Swift Package Manager Documentation 还声明“您可以为任何有效的 Swift 包指定一个 URL(或本地路径)”并提供了一个示例 Package.swift
本地文件引用:.Package(url: "../StringExtensions", "1.0.0")
.
注意:我编辑了答案以阐明 Swift 包管理器可以引用本地路径,但路径 必须 包含带有标签的有效 Git 存储库。我的原始测试项目指向一个包含 .git
目录的依赖本地路径,因此它成功构建了 swift build
.
使用 Swift 4 版本工具,有不同的方法可以做到这一点——您不必提供标记版本:
.package(url: "<path to repo>", .branch("master")),
另请参阅:https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md
您也可以使用
.package(path: "path to folder")
如果您不想要额外的 git 存储库的开销。这甚至可以是相对路径。
我知道 Swift 包管理器可以将 github 中的代码编译为我的项目的模块,但我可以让包管理器编译存储在我计算机本地的代码吗?
我的想法是我有一些代码想从我的项目的其余部分中分离出来,所以我将它保存在一个文件夹中,Swift 编译器将构建它以便可以导入该代码像任何其他模块一样。
您可以在 Package.swift
文件中引用本地目录,但它必须是 Git 存储库。此外,初始化回购、提交和标记是不够的;必须将存储库推送到远程,swift build
才能正常运行。
Packages are Git repositories, tagged with semantic versions, containing a Package.swift file at their root. Initializing the package created a Package.swift file, but to make it a usable package we need to initialize a Git repository with at least one version tag.
Swift Package Manager Documentation 还声明“您可以为任何有效的 Swift 包指定一个 URL(或本地路径)”并提供了一个示例 Package.swift
本地文件引用:.Package(url: "../StringExtensions", "1.0.0")
.
注意:我编辑了答案以阐明 Swift 包管理器可以引用本地路径,但路径 必须 包含带有标签的有效 Git 存储库。我的原始测试项目指向一个包含 .git
目录的依赖本地路径,因此它成功构建了 swift build
.
使用 Swift 4 版本工具,有不同的方法可以做到这一点——您不必提供标记版本:
.package(url: "<path to repo>", .branch("master")),
另请参阅:https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md
您也可以使用
.package(path: "path to folder")
如果您不想要额外的 git 存储库的开销。这甚至可以是相对路径。