目录结构
目录结构 {#directory-structure}
Section titled “目录结构 {#directory-structure}”虽然 Tuist 项目通常用于取代 Xcode 项目,但它们的用例并不仅限于此。Tuist 项目还可用于生成其他类型的项目,如 SPM 包、模板、插件和任务。本文档描述了 Tuist 项目的结构以及如何组织它们。在后面的章节中,我们将介绍如何定义模板、插件和任务。
标准 Tuist 项目 {#standard-tuist-projects}
Section titled “标准 Tuist 项目 {#standard-tuist-projects}”Tuist 项目是 Tuist 生成的最常见的项目类型。它们用于构建应用程序、框架和库等。与 Xcode 项目不同,Tuist 项目使用 Swift 定义,这使它们更加灵活,更易于维护。Tuist 项目也更具声明性,更容易理解和推理。以下结构展示了一个典型的 Tuist 项目,用于生成 Xcode 项目:
Tuist.swiftTuist/ Package.swift ProjectDescriptionHelpers/Projects/ App/ Project.swift Feature/ Project.swiftWorkspace.swift-
Tuist 目录: 这个目录有两个目的。首先,它表示项目的根目录在哪里。这允许构造相对于项目根目录的路径,也可以从项目内的任何目录运行 Tuist 命令。其次,它是以下文件的容器:
- ProjectDescriptionHelpers: 这个目录包含在所有清单文件之间共享的 Swift 代码。清单文件可以
import ProjectDescriptionHelpers来使用该目录中定义的代码。共享代码有助于避免重复并确保项目之间的一致性。 - Package.swift: 这个文件包含 Swift Package 依赖项,Tuist 使用 Xcode 项目和 targets(如 CocoaPods)来集成它们,这些是可配置和可优化的。在
这里 了解更多。
- ProjectDescriptionHelpers: 这个目录包含在所有清单文件之间共享的 Swift 代码。清单文件可以
-
根目录: 项目的根目录,也包含
Tuist目录。 这个文件包含在所有项目、工作空间和环境之间共享的 Tuist 配置。例如,它可以用于禁用自动生成 schemes,或定义项目的部署目标。Tuist.swift: 这个清单表示一个 Xcode 工作空间。它用于对其他项目进行分组,也可以添加额外的文件和 schemes。Workspace.swift: 这个清单表示一个 Xcode 项目。它用于定义属于该项目 的 targets 及其依赖项。Project.swift:
与上述项目交互时,命令期望在工作目录或通过 --path 标志指定的目录中找到 Workspace.swift 或 Project.swift 文件。清单应该位于包含 Tuist 目录(表示项目根目录)的目录或其子目录中。
::: tip
Xcode 工作空间允许将项目拆分为多个 Xcode 项目以减少合并冲突的可能性。如果你使用工作空间的目的是这个,在 Tuist 中你不再需要它们。Tuist 会自动生成一个包含项目及其依赖项目的工作空间。
:::
Swift 包 {#swift-package-badge-typewarning-textbeta-}
Section titled “Swift 包 {#swift-package-badge-typewarning-textbeta-}”Tuist 也支持 SPM 包项目。如果你正在使用 SPM 包,你不需要做任何更改。Tuist 会自动识别你的根 Package.swift,Tuist 的所有功能都像使用 Project.swift 清单一样工作。
要开始使用,请在你的 SPM 包中运行 tuist install 和 tuist generate。你的项目现在应该拥有与 vanilla Xcode SPM 集成相同的所有 schemes 和文件。但是,现在你也可以运行 tuist cache