跳至内容

目录结构

尽管 Tuist 项目通常用于取代 Xcode 项目,但它们并不局限于这种使用情况。Tuist 项目还可用于生成其他类型的项目,如 SPM 包、模板、插件和任务。本文档将介绍 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 代码。清单文件可以导入 ProjectDescriptionHelpers ,以使用该目录中定义的代码。共享代码有助于避免重复并确保各项目之间的一致性。
    • Package.swift: 该文件包含 Swift 软件包依赖项,以便 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 软件包 {#swift-package-badge-typewarning-textbeta-}#

Tuist 还支持 SPM 软件包项目。如果您正在开发 SPM 软件包,则无需更新任何内容。Tuist 会自动获取您的根Package.swift ,Tuist 的所有功能都会像Project.swift 清单一样工作。

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