SuperAPI AI 工具集

using-tuist-generated-projects

编程与开发

查看项目

更新于 10-15 18:08

技能介绍

用途

该技能用于指导在 Tuist 生成的 Xcode 工作区中进行日常开发工作,包括项目生成、构建与测试命令,以及可构建文件夹(buildable folders)的使用。适用于在 Tuist 生成的项目中工作时,帮助开发者正确执行相关命令并遵循项目定义与工作流规范。

主要能力

快速开始

在不打开 Xcode 的情况下生成工作区:

tuist generate --no-open

使用 xcodebuild 构建 scheme:

xcodebuild build -workspace App.xcworkspace -scheme App

使用 xcodebuild 运行测试:

xcodebuild test -workspace App.xcworkspace -scheme AppTests -only-testing AppTests/MyTestCase

项目定义

优先使用可构建文件夹

使用 buildableFolders 代替 sources 和 resources 通配符。可构建文件夹与文件系统保持同步,因此添加或删除文件无需重新生成。

let target = Target(
  name: "App",
  buildableFolders: [
    "App/Sources",
    "App/Resources",
  ]
)

为 target 打标签以便聚焦

使用 target 标签对项目区域进行分组,例如:

tag:team:* tag:feature:* tag:layer:*

这些标签便于后续限定生成和测试范围。

带标签的 target 元数据示例:

let target = Target(
  name: "PaymentsUI",
  metadata: .metadata(tags: [
    "tag:team:commerce",
    "tag:feature:payments",
    "tag:layer:ui",
  ])
)

在聚焦某个区域时,只生成所需内容:

tuist generate tag:feature:payments
tuist generate PaymentsUI PaymentsTests

对齐构建配置

保持项目与外部依赖之间的构建配置一致。使用 PackageSettings(settings: .settings(configurations: [])) 镜像项目配置;不匹配时会发出警告。

使用方式

工作流

有意识地生成

在自动化和脚本中使用 tuist generate --no-open,避免启动 Xcode。

当任何 manifest 发生变化(或依赖图变化)时重新生成。

如果因缺少产物导致生成失败,运行 tuist install 解析依赖后重试。

使用 xcodebuild 构建

针对生成的工作区和 scheme 使用 xcodebuild build。

xcodebuild build \
  -workspace App.xcworkspace \
  -scheme App \
  -destination "generic/platform=iOS Simulator"

使用 xcodebuild 测试

在本地运行测试时使用 xcodebuild test。优先使用它而非 tuist test,因为 tuist test 每次调用都会重新生成项目,从而拖慢迭代速度。

优化测试运行时间:

  • 使用 --only-testing 只运行你正在处理的特定测试套件或测试用例,而不是整个 target。
  • 选择编译目标最少但仍包含所需测试 target 的 scheme。这能最小化测试运行前的构建时间。
# 运行特定测试套件
xcodebuild test \
  -workspace App.xcworkspace \
  -scheme AppTests \
  -only-testing AppTests/MyTestSuite

# 运行单个测试用例
xcodebuild test \
  -workspace App.xcworkspace \
  -scheme AppTests \
  -only-testing AppTests/MyTestSuite/testMyFunction

指南

  • 保持 buildableFolders 路径与 target 的真实文件系统布局一致。
  • 避免在同一 target 中让 buildableFolders 与 sources 或 resources 通配符重叠。
  • 在运行 tuist generate --no-open 后,需要时手动打开 Xcode。

适用场景

适用于在 Tuist 生成的 Xcode 工作区中进行日常开发,包括项目生成、构建、测试以及项目定义维护。特别适合需要聚焦特定功能区域、优化测试运行时间,或在自动化脚本中生成项目的场景。

限制

故障排除

静态副作用警告:有意识地调整产物类型。对本地 target 使用 Target.product,对外部产物使用 PackageSettings(productTypes:)。将所有内容设为动态的 .framework 可以编译和运行,但可能损害启动时间。尽可能优先使用静态产物(静态框架或库),且不引入副作用时。

Objective-C 依赖崩溃:根据需要,在消费 target 上通过 OTHER_LDFLAGS 添加 -ObjC 或 -force_load。参考:https://tuist.dev/en/docs/guides/features/projects/dependencies#objectivec-dependencies。