Swift 包管理器仅添加选定的库

vdo*_*tup 5 xcode github package swift swift-package-manager

// swift-tools-version:5.5
import PackageDescription
    
let package = Package(
    name: "PKG",
    platforms: [.iOS(.v15)],
    products: [
        .library(name: "Lib1", targets: ["Lib1"]),
        .library(name: "Lib2", targets: ["Lib2"]),
        .library(name: "Lib3", targets: ["Lib3"]),
    ],
    dependencies: [
    ],
    targets: [
        .target(name: "Lib1", dependencies: []),
        .target(name: "Lib2", dependencies: []),
        .target(name: "Lib3", dependencies: []),
    ]
)
Run Code Online (Sandbox Code Playgroud)

我正在创建一个包含多个产品的包,我将其上传到github以在我的项目中的SPM中使用它,

它让我选择要添加到我的项目中的库,这就是我想要的,但无论我选择什么,它都会将所有库及其文件带到我的项目中,这是它的工作原理吗?或者我可以让它只下载选定的库及其依赖项吗?

谢谢

Dan*_*iel 2

不幸的是,SPM 将始终下载包含包/子包的完整存储库。您可以在任何具有多种产品的主要库中尝试该行为,例如firebase(另请注意,下载中也将包含演示应用程序和测试等支持代码)。

有关更多信息,请参阅swift.org 上的讨论

解决方法是将您的库拆分为多个存储库或使用另一个依赖项管理器,例如完全支持该功能的cocoapods 。