Plantillas
En proyectos con una arquitectura establecida, los desarrolladores pueden querer
arrancar nuevos componentes o características que sean consistentes con el
proyecto. Con tuist scaffold puedes generar archivos a partir de una
plantilla. Puedes definir tus propias plantillas o utilizar las que se venden
con Tuist. Estos son algunos escenarios en los que el andamiaje puede ser útil:
- Cree una nueva característica que siga una arquitectura determinada:
tuist scaffold viper --name MyFeature. - Crear nuevos proyectos:
tuist scaffold feature-project --name Home
Tuist no opina sobre el contenido de tus plantillas, ni para qué las utilizas. Sólo se requiere que estén en un directorio específico.
Definir una plantilla#
Para definir plantillas, puede ejecutar
tuist edit y luego crear un directorio llamado name_of_template
bajo Tuist/Templates que representa su plantilla. Las plantillas necesitan un
archivo de manifiesto, name_of_template.swift que describe la plantilla. Así
que si estás creando una plantilla llamada framework, deberías crear un nuevo
directorio framework en Tuist/Templates con un archivo de manifiesto llamado
framework.swift que podría tener este aspecto:
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"
),
]
)
Utilizar una plantilla#
Una vez definida la plantilla, podemos utilizarla desde el comando scaffold:
tuist scaffold name_of_template --name Name --platform macos
Dado que la plataforma es un argumento opcional, también podemos llamar al
comando sin el argumento --platform macos.
Si .string y .files no proporcionan suficiente flexibilidad, puede
aprovechar el lenguaje de plantillas
Stencil mediante el caso .file.
Además, también puede utilizar filtros adicionales definidos aquí.
Utilizando la interpolación de cadenas, \(nombreAtributo) anterior se
resolvería en {{ nombre }}. Si desea utilizar filtros Stencil en la definición
de la plantilla, puede utilizar esa interpolación manualmente y añadir los
filtros que desee. Por ejemplo, puede utilizar { { nombre | minúsculas } } en
lugar de \(nombreAtributo) para obtener el valor en minúsculas del atributo
nombre.
También puede utilizar .directory, que ofrece la posibilidad de copiar
carpetas enteras en una ruta determinada.
Las plantillas admiten el uso de ayudantes de descripción de proyectos para reutilizar código entre plantillas.