Ir al contenido

Plantillas

En proyectos con una arquitectura establecida, es posible que quieras crear nuevos componentes o funcionalidades que sean coherentes con el proyecto. Con tuist scaffold puedes generar archivos a partir de una plantilla. Puedes definir tus propias plantillas o usar las que vienen incluidas con Tuist. Estos son algunos escenarios en los que el scaffolding puede ser útil:

  • Crear una nueva funcionalidad que siga una arquitectura determinada: tuist scaffold viper --name MyFeature.
  • Crear nuevos proyectos: tuist scaffold feature-project --name Home
Sin opiniones preconcebidas

Tuist no impone restricciones sobre el contenido de tus plantillas ni sobre su uso. Solo se requiere que estén en un directorio específico.

Definir una plantilla#

Para definir plantillas, puedes ejecutar tuist edit y luego crear un directorio llamado name_of_template dentro de Tuist/Templates que represente tu plantilla. Las plantillas necesitan un archivo de manifiesto, name_of_template.swift, que describe la plantilla. Por lo tanto, si estás creando una plantilla llamada framework, debes crear un nuevo directorio framework en Tuist/Templates con un archivo de manifiesto llamado framework.swift que podría verse así:

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"
),
]
)

Usar una plantilla#

Después de definir la plantilla, puedes usarla desde el comando scaffold:

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

Dado que platform es un argumento opcional, también puedes llamar al comando sin el argumento --platform macos.

Si .string y .files no ofrecen suficiente flexibilidad, puedes aprovechar el lenguaje de plantillas Stencil mediante el caso .file. Además, también puedes usar filtros adicionales definidos aquí.

Al usar interpolación de cadenas, \(nameAttribute) se resolvería como {{ name }}. Si quieres usar filtros de Stencil en la definición de la plantilla, puedes aplicar esa interpolación manualmente y añadir los filtros que desees. Por ejemplo, podrías usar { { name | lowercase } } en lugar de \(nameAttribute) para obtener el valor en minúsculas del atributo name.

También puedes usar .directory, que permite copiar carpetas completas a una ruta determinada.

Ayudantes de ProjectDescription

Las plantillas admiten el uso de ayudantes de ProjectDescription para reutilizar código entre plantillas.