跳转到内容

目录结构

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

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

Terminal window
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 项目和 targets(如 CocoaPods)来集成它们,这些是可配置和可优化的。在这里了解更多。
  • 根目录: 项目的根目录,也包含 Tuist 目录。

    • Tuist.swift: 这个文件包含在所有项目、工作空间和环境之间共享的 Tuist 配置。例如,它可以用于禁用自动生成 schemes,或定义项目的部署目标。
    • Workspace.swift: 这个清单表示一个 Xcode 工作空间。它用于对其他项目进行分组,也可以添加额外的文件和 schemes。
    • Project.swift: 这个清单表示一个 Xcode 项目。它用于定义属于该项目 的 targets 及其依赖项。

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

Tuist 也支持 SPM 包项目。如果你正在使用 SPM 包,你不需要做任何更改。Tuist 会自动识别你的根 Package.swift,Tuist 的所有功能都像使用 Project.swift 清单一样工作。

要开始使用,请在你的 SPM 包中运行 tuist installtuist generate。你的项目现在应该拥有与 vanilla Xcode SPM 集成相同的所有 schemes 和文件。但是,现在你也可以运行 tuist cache,让大部分 SPM 依赖和模块预编译,使后续构建非常快。