Skip to content

Translation 🌍

You can translate or improve the translation of this page.

Contribute

表现形式

Tuist 默认将 Swift 文件作为定义项目和工作区以及配置生成流程的主要方式。这些文件在整个文档中被称为manifest files

决定使用 Swift 的灵感来自Swift 包管理器,它也使用 Swift 文件来定义包。由于使用了 Swift,我们可以利用编译器来验证内容的正确性,并在不同的清单文件中重复使用代码,还可以利用 Xcode 的语法高亮显示、自动完成和验证功能来提供一流的编辑体验。

CACHING

由于清单文件是需要编译的 Swift 文件,Tuist 会缓存编译结果,以加快解析过程。因此,第一次运行 Tuist 时,生成项目的时间可能会稍长一些。之后的运行速度会更快。

Project.swift

`Project.swift`

清单声明了一个 Xcode 项目。项目将在清单文件所在的同一目录中生成,其名称在name 属性中指明。

swift
// Project.swift
let project = Project(
    name: "App",
    targets: [
        // ....
    ]
)

ROOT VARIABLES

清单根部唯一的变量是let project = Project(...) 。如果需要在清单的不同部分重复使用代码,可以使用 Swift 函数。

工作区.swift

默认情况下,Tuist 会生成一个 Xcode 工作区,其中包含正在生成的项目及其依赖项目。如果出于任何原因,您想自定义工作区以添加其他项目或包含文件和组,可以通过定义

`Workspace.swift`

清单来实现。

swift
// Workspace.swift
import ProjectDescription

let workspace = Workspace(
    name: "App-Workspace",
    projects: [
        "./App", // Path to directory containing the Project.swift file
    ]
)

信息

Tuist 将解析依赖关系图,并将依赖关系的项目包含在工作区中。您无需手动包含它们。这是构建系统正确解析依赖关系所必需的。

:::

多项目或单项目

一个经常出现的问题是,在一个工作区中使用单个项目还是多个项目。在没有 Tuist 的世界里,单项目设置会导致频繁的 Git 冲突,因此我们鼓励使用工作区。不过,由于我们不建议在 Git 仓库中包含 Tuist 生成的 Xcode 项目,因此 Git 冲突并不是问题。因此,您可以自行决定在工作区中使用单个项目还是多个项目。

在 Tuist 项目中,我们倾向于使用单项目,因为冷生成时间更快(需要编译的清单文件更少),而且我们利用

项目描述助手 作为封装单元。不过,您可能希望使用 Xcode 项目作为封装单元,以代表应用程序的不同领域,这与 Xcode

推荐的项目结构更为接近。

Tuist.swift

Tuist 提供了

合理的默认值,以简化项目配置。不过,您也可以通过在项目根目录下定义一个`Tuist.swift`

来自定义配置,Tuist 会使用它来确定项目的根目录。

swift
import ProjectDescription

let tuist = Tuist(
    project: .tuist(generationOptions: .options(enforceExplicitDependencies: true))
)

Released under the MIT License.