Etiquetas de metadatos
A medida que los proyectos crecen en tamaño y complejidad, trabajar con todo el código base a la vez puede resultar ineficaz. Tuist proporciona etiquetas de metadatos **** como una forma de organizar los objetivos en grupos lógicos y centrarse en partes específicas de su proyecto durante el desarrollo.
¿Qué son las etiquetas de metadatos?
Las etiquetas de metadatos son etiquetas de cadena que puede adjuntar a los objetivos de su proyecto. Sirven como marcadores que le permiten:
- Agrupar objetivos relacionados - Etiquetar objetivos que pertenecen a la misma característica, equipo o capa arquitectónica.
- Enfoque su espacio de trabajo - Genere proyectos que incluyan sólo objetivos con etiquetas específicas
- Optimice su flujo de trabajo - Trabaje en funciones específicas sin cargar partes no relacionadas de su código base.
- Seleccionar objetivos para mantener como fuentes - Elija qué grupo de objetivos desea mantener como fuentes al almacenar en caché.
Las etiquetas se definen utilizando la propiedad metadata en los objetivos y se almacenan como una matriz de cadenas.
Definición de etiquetas de metadatos
Puede añadir etiquetas a cualquier objetivo de su manifiesto de proyecto:
swift
import ProjectDescription
let project = Project(
name: "MyApp",
targets: [
.target(
name: "Authentication",
destinations: .iOS,
product: .framework,
bundleId: "com.example.authentication",
sources: ["Sources/**"],
metadata: .metadata(tags: ["feature:auth", "team:identity"])
),
.target(
name: "Payment",
destinations: .iOS,
product: .framework,
bundleId: "com.example.payment",
sources: ["Sources/**"],
metadata: .metadata(tags: ["feature:payment", "team:commerce"])
),
.target(
name: "App",
destinations: .iOS,
product: .app,
bundleId: "com.example.app",
sources: ["Sources/**"],
dependencies: [
.target(name: "Authentication"),
.target(name: "Payment")
]
)
]
)Centrarse en objetivos marcados
Una vez etiquetados los objetivos, puede utilizar el comando tuist generate para crear un proyecto específico que incluya únicamente objetivos concretos:
Enfoque por etiqueta
Utilice el prefijo tag: para generar un proyecto con todos los objetivos que coincidan con una etiqueta específica:
bash
# Generate project with all authentication-related targets
tuist generate tag:feature:auth
# Generate project with all targets owned by the identity team
tuist generate tag:team:identityEnfoque por nombre
También puede centrarse en objetivos específicos por su nombre:
bash
# Generate project with the Authentication target
tuist generate AuthenticationCómo funciona el enfoque
Cuando te centras en objetivos:
- Objetivos incluidos - Los objetivos que coinciden con su consulta se incluyen en el proyecto generado.
- Dependencias - Se incluyen automáticamente todas las dependencias de los objetivos enfocados.
- Objetivos de prueba - Se incluyen objetivos de prueba para los objetivos enfocados
- Exclusión - Todos los demás objetivos quedan excluidos del espacio de trabajo
Esto significa que dispones de un espacio de trabajo más pequeño y manejable que contiene sólo lo que necesitas para trabajar en tu reportaje.
Convenciones de denominación de etiquetas
Aunque se puede utilizar cualquier cadena como etiqueta, seguir una convención de nomenclatura coherente ayuda a mantener las etiquetas organizadas:
swift
// Organize by feature
metadata: .metadata(tags: ["feature:authentication", "feature:payment"])
// Organize by team ownership
metadata: .metadata(tags: ["team:identity", "team:commerce"])
// Organize by architectural layer
metadata: .metadata(tags: ["layer:ui", "layer:business", "layer:data"])
// Organize by platform
metadata: .metadata(tags: ["platform:ios", "platform:macos"])
// Combine multiple dimensions
metadata: .metadata(tags: ["feature:auth", "team:identity", "layer:ui"])El uso de prefijos como feature:, team:, o layer: facilita la comprensión del propósito de cada etiqueta y evita conflictos de nomenclatura.
Utilización de etiquetas con los asistentes de descripción de proyectos
Puede utilizar ayudantes de descripción de proyectos para estandarizar cómo se aplican las etiquetas en todo el proyecto:
swift
// Tuist/ProjectDescriptionHelpers/Project+Templates.swift
import ProjectDescription
extension Target {
public static func feature(
name: String,
team: String,
dependencies: [TargetDependency] = []
) -> Target {
.target(
name: name,
destinations: .iOS,
product: .framework,
bundleId: "com.example.\(name.lowercased())",
sources: ["Sources/**"],
dependencies: dependencies,
metadata: .metadata(tags: [
"feature:\(name.lowercased())",
"team:\(team.lowercased())"
])
)
}
}Luego úsalo en tus manifiestos:
swift
import ProjectDescription
import ProjectDescriptionHelpers
let project = Project(
name: "Features",
targets: [
.feature(name: "Authentication", team: "Identity"),
.feature(name: "Payment", team: "Commerce"),
]
)Ventajas de utilizar etiquetas de metadatos
Experiencia de desarrollo mejorada
Si te centras en partes concretas de tu proyecto, podrás:
- Reduzca el tamaño de los proyectos de Xcode - Trabaje con proyectos más pequeños que son más rápidos de abrir y navegar.
- Acelera las construcciones - Construye sólo lo que necesitas para tu trabajo actual
- Mejorar la concentración - Evitar distracciones de código no relacionado
- Optimizar la indexación - Xcode indexa menos código, haciendo más rápido el autocompletado.
Mejor organización del proyecto
Las etiquetas permiten organizar el código de forma flexible:
- Múltiples dimensiones - Etiquetar objetivos por característica, equipo, capa, plataforma o cualquier otra dimensión.
- Sin cambios estructurales - Añada estructura organizativa sin cambiar el diseño del directorio
- Preocupaciones transversales - Un mismo objetivo puede pertenecer a varios grupos lógicos
Integración con la caché
Las etiquetas de metadatos funcionan a la perfección con las funciones de almacenamiento en caché de Tuist:
bash
# Cache all targets
tuist cache
# Focus on targets with a specific tag and use cached dependencies
tuist generate tag:feature:paymentBuenas prácticas
- Inicio sencillo - Comience con una única dimensión de etiquetado (por ejemplo, características) y amplíela según sea necesario.
- Sea coherente - Utilice las mismas convenciones de nomenclatura en todos sus manifiestos.
- Documente sus etiquetas - Mantenga una lista de las etiquetas disponibles y sus significados en la documentación de su proyecto.
- Use helpers - Aproveche los helpers de descripción de proyectos para estandarizar la aplicación de etiquetas
- Revise periódicamente - A medida que evolucione su proyecto, revise y actualice su estrategia de etiquetado.
Funciones relacionadas
- Compartir código - Utilizar ayudantes de descripción de proyectos para estandarizar el uso de etiquetas
- Caché - Combine las etiquetas con la caché para obtener un rendimiento óptimo de la compilación
- Pruebas selectivas - Ejecutar pruebas sólo para los objetivos modificados
