Skip to content

Translation 🌍

You can translate or improve the translation of this page.

Contribute

模板

在具有既定架构的项目中,开发人员可能希望引导与项目一致的新组件或功能。通过tuist scaffold ,您可以从模板生成文件。您可以定义自己的模板,也可以使用 Tuist 提供的模板。这些是脚手架可能有用的一些情况:

  • 创建遵循给定架构的新功能:tuist scaffold viper --name MyFeature
  • 创建新项目:tuist scaffold feature-project --name Home

NON-OPINIONATED

Tuist 对模板的内容和用途没有任何意见。它们只被要求放在特定的目录中。

定义模板

要定义模板,可以运行 tuist edit,然后在Tuist/Templates 下创建一个名为name_of_template 的目录,代表你的模板。模板需要一个清单文件name_of_template.swift 来描述模板。因此,如果您要创建一个名为framework 的模板,则应在Tuist/Templates 下创建一个新目录framework ,并创建一个名为framework.swift 的清单文件,该文件可以如下所示:

swift
import ProjectDescription

let nameAttribute: Template.Attribute = .required("name")

let template = Template(
    description: "Custom template",
    attributes: [
        nameAttribute,
        .optional("platform", default: "ios"),
    ],
    items: [
        .string(
            path: "Project.swift",
            contents: "My template contents of name \(nameAttribute)"
        ),
        .file(
            path: "generated/Up.swift",
            templatePath: "generate.stencil"
        ),
        .directory(
            path: "destinationFolder",
            sourcePath: "sourceFolder"
        ),
    ]
)

使用模板

定义模板后,我们可以通过scaffold 命令使用它:

bash
tuist scaffold name_of_template --name Name --platform macos

信息

由于平台是一个可选参数,我们也可以调用该命令而不使用--platform macos 参数。

:::

如果.string.files 的灵活性不够,您可以通过.file 使用 Stencil 模板语言。除此之外,您还可以使用此处定义的其他过滤器。

使用字符串插值法,上述\(nameAttribute) 将解析为 。如果想在模板定义中使用 Stencil 过滤器,可以手动使用插值法并添加任何过滤器。例如,您可以使用{ { name | 小写 }}} 而不是\(nameAttribute) 来获取 name 属性的小写值。

您还可以使用.directory 将整个文件夹复制到指定路径。

PROJECT DESCRIPTION HELPERS

模板支持使用 项目描述助手,以便在不同模板之间重复使用代码。

Released under the MIT License.