能否通过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
相关产品推荐
相关产品推荐

