You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Tuist将SPM包依赖分组到子组/子文件夹优化项目结构?

Tuist 对SPM依赖的分组与组织方案

1. 对软件包依赖进行分组,优化项目组织

完全可以。Tuist支持通过结构化定义依赖,将不同类型的SPM包按业务或功能维度归类到逻辑分组中,让项目结构更清晰。

具体做法是在Project.swift中,先定义好项目的packages依赖源,再在groups配置里创建对应逻辑组,最后把关联的SPM依赖添加到组的子项中;同时在target的依赖列表里正常引用这些包即可。比如把UI组件类依赖归到「UI Dependencies」组,网络类依赖归到「Network Dependencies」组。

示例代码片段:

import TuistCore
import TuistGraph

let project = Project(
    name: "MyApp",
    targets: [
        Target(
            name: "MyApp",
            platform: .iOS,
            product: .app,
            bundleId: "com.myapp",
            sources: ["Sources/**"],
            dependencies: [
                .package(product: "SnapKit"),
                .package(product: "SwiftUIX"),
                .package(product: "Alamofire")
            ]
        )
    ],
    packages: [
        .remote(url: "https://github.com/SnapKit/SnapKit.git", requirement: .upToNextMajor(from: "5.6.0")),
        .remote(url: "https://github.com/SwiftUIX/SwiftUIX.git", requirement: .upToNextMajor(from: "0.1.0")),
        .remote(url: "https://github.com/Alamofire/Alamofire.git", requirement: .upToNextMajor(from: "5.8.0"))
    ],
    groups: [
        Group(name: "UI Dependencies", children: [
            .package(product: "SnapKit"),
            .package(product: "SwiftUIX")
        ]),
        Group(name: "Network Dependencies", children: [
            .package(product: "Alamofire")
        ])
    ]
)

2. 将SPM包从默认「Packages」组移到子组/子文件夹

当然可以。Tuist不会强制SPM依赖放在默认的「Packages」组,你可以完全自定义这些依赖的组织方式,把它们放到指定的子组或虚拟子文件夹中。

核心逻辑就是上面示例里的groups配置:创建自定义子组,将对应的package(product:)添加到子组的children数组中。执行tuist generate后,生成的Xcode项目里,这些SPM依赖就会出你定义的子组下,而非默认的「Packages」组。

如果需要整理到物理子文件夹(而非仅Xcode虚拟组),可以配合Tuist的fileSystem配置,但通常SPM包本身存储在项目外的缓存目录,虚拟分组已经足够满足组织需求,无需移动物理文件。

内容的提问来源于stack exchange,提问作者LuigleDR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:33:10