目录结构
尽管 Tuist 项目通常用于取代 Xcode 项目,但它们并不局限于这种使用情况。Tuist 项目还可用于生成其他类型的项目,如 SPM 包、模板、插件和任务。本文档将介绍 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 软件包 {#swift-package-badge-typewarning-textbeta-}#
Tuist 还支持 SPM 软件包项目。如果您正在开发 SPM 软件包,则无需更新任何内容。Tuist 会自动获取您的根Package.swift
,Tuist 的所有功能都会像Project.swift 清单一样工作。
要开始使用,请在您的 SPM 包中运行tuist install 和tuist generate 。现在,您的项目应该拥有与 Xcode SPM
集成中相同的方案和文件。不过,现在您还可以运行 tuist cache 并对大部分 SPM 依赖项和模块进行预编译,从而使后续的编译速度极快。