目录结构
虽然 Tuist 项目通常用于取代 Xcode 项目,但其用途并不仅限于此。Tuist 项目还可用于生成其他类型的项目,例如 SPM 包、模板、插件和任务。本文档介绍了 Tuist 项目的结构以及如何组织它们。在后续章节中,我们将介绍如何定义模板、插件和任务。
标准 Tuist 项目#
Tuist 项目是 Tuist 生成的最常见的项目类型。 它们用于构建应用、框架和库等。与 Xcode 项目不同,Tuist 项目使用 Swift 定义,这使它们更加灵活且易于维护。Tuist 项目也更加声明式,从而更易于理解和推理。以下结构展示了一个生成 Xcode 项目的典型 Tuist 项目:
Tuist.swift
Tuist/
Package.swift
ProjectDescriptionHelpers/
Projects/
App/
Project.swift
Feature/
Project.swift
Workspace.swift
Tuist 目录: 该目录有两个作用。首先,它标示 项目的根目录位置。这使得可以构建相对于项目根目录的路径,并允许从项目内的任何目录运行 Tuist 命令。其次,它是以下文件的容器:
根目录:你的项目的根目录,其中也包含
Tuist目录。Tuist.swift: 此文件包含适用于所有项目、工作区和环境的 Tuist 配置。例如,它可以用于禁用方案的自动生成,或定义项目的部署目标。Workspace.swift: 此清单表示一个 Xcode 工作区。它用于组合其他项目,还可以添加额外的文件和方案。Project.swift: 此清单表示一个 Xcode 项目。它用于定义属于该项目的目标及其依赖项。
在与上述项目交互时,命令期望在工作目录或通过 --path 标志指定的目录中找到 Workspace.swift 或 Project.swift 文件。清单应位于包含 Tuist 目录的目录或其子目录中,该目录代表项目的根目录。
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 依赖项和模块预编译,从而使后续构建速度极快。