跳到内容

目录结构

虽然 Tuist 项目通常用于取代 Xcode 项目,但其用途并不仅限于此。Tuist 项目还可用于生成其他类型的项目,例如 SPM 包、模板、插件和任务。本文档介绍了 Tuist 项目的结构以及如何组织它们。在后续章节中,我们将介绍如何定义模板、插件和任务。

标准 Tuist 项目#

Tuist 项目是 Tuist 生成的最常见的项目类型。 它们用于构建应用、框架和库等。与 Xcode 项目不同,Tuist 项目使用 Swift 定义,这使它们更加灵活且易于维护。Tuist 项目也更加声明式,从而更易于理解和推理。以下结构展示了一个生成 Xcode 项目的典型 Tuist 项目:

bash
Tuist.swift
Tuist/
Package.swift
ProjectDescriptionHelpers/
Projects/
App/
Project.swift
Feature/
Project.swift
Workspace.swift
  • Tuist 目录: 该目录有两个作用。首先,它标示 项目的根目录位置。这使得可以构建相对于项目根目录的路径,并允许从项目内的任何目录运行 Tuist 命令。其次,它是以下文件的容器:

    • ProjectDescriptionHelpers: 此目录包含在所有清单文件之间共享的 Swift 代码。清单文件可以 import ProjectDescriptionHelpers 以使用在此目录中定义的代码。共享代码有助于避免重复并确保各项目之间的一致性。
    • Package.swift: 此文件包含 Swift Package 依赖项,Tuist 会使用 Xcode 项目和目标来集成它们(如 CocoaPods),这些依赖项是可配置和可优化的。了解更多 此处。
  • 根目录:你的项目的根目录,其中也包含 Tuist 目录。

    • Tuist.swift: 此文件包含适用于所有项目、工作区和环境的 Tuist 配置。例如,它可以用于禁用方案的自动生成,或定义项目的部署目标。
    • Workspace.swift: 此清单表示一个 Xcode 工作区。它用于组合其他项目,还可以添加额外的文件和方案。
    • Project.swift: 此清单表示一个 Xcode 项目。它用于定义属于该项目的目标及其依赖项。

在与上述项目交互时,命令期望在工作目录或通过 --path 标志指定的目录中找到 Workspace.swift 或 Project.swift 文件。清单应位于包含 Tuist 目录的目录或其子目录中,该目录代表项目的根目录。

Tip

Xcode 工作区允许将项目拆分为多个 Xcode 项目,以降低合并冲突的可能性。如果你之前使用工作区是为了这个目的,那么在 Tuist 中你不再需要它们。Tuist 会自动生成一个包含项目及其依赖项项目的工作区。

Swift Package #

Tuist 还支持 SPM 包项目。如果你正在开发 SPM 包,则无需进行任何更新。Tuist 会自动识别你的根 Package.swift,并且 Tuist 的所有功能都像它是一个 Project.swift 清单一样正常工作。

要开始使用,请在你的 SPM 包中运行 tuist install 和 tuist generate。现在,你的项目应该拥有与原生 Xcode SPM 集成中相同的所有方案和文件。不过,你现在还可以运行 tuist cache,并将大多数 SPM 依赖项和模块预编译,从而使后续构建速度极快。