Buenas prácticas
A lo largo de los años trabajando con diferentes equipos y proyectos, hemos identificado un conjunto de buenas prácticas que recomendamos seguir cuando se trabaja con proyectos Tuist y Xcode. Estas prácticas no son obligatorias, pero pueden ayudarte a estructurar tus proyectos de forma que sean más fáciles de mantener y escalar.
Xcode
Patrones desalentadores
Configuraciones para modelar entornos remotos
Muchas organizaciones utilizan configuraciones de compilación para modelar diferentes entornos remotos (por ejemplo, Debug-Production o Release-Canary), pero este enfoque tiene algunas desventajas:
- Inconsistencias: Si hay incoherencias de configuración en todo el gráfico, el sistema de compilación puede acabar utilizando la configuración incorrecta para algunos objetivos.
- Complejidad: Los proyectos pueden acabar con una larga lista de configuraciones locales y entornos remotos difíciles de razonar y mantener.
Las configuraciones de compilación se diseñaron para incorporar diferentes configuraciones de compilación, y los proyectos rara vez necesitan más que Debug y Release. La necesidad de modelar diferentes entornos puede lograrse de diferentes maneras:
- En construcciones Debug: Puedes incluir en la app todas las configuraciones que deberían ser accesibles en desarrollo (por ejemplo, endpoints), y cambiarlas en tiempo de ejecución. El cambio se puede realizar mediante variables de entorno de lanzamiento o con una interfaz de usuario dentro de la aplicación.
- En compilaciones Release: En caso de lanzamiento, sólo puede incluir la configuración a la que está vinculada la compilación de lanzamiento, y no incluir la lógica de tiempo de ejecución para cambiar las configuraciones mediante el uso de directivas del compilador.
Configuraciones no estándar
Aunque Tuist admite configuraciones no estándar y las hace más fáciles de gestionar en comparación con los proyectos Xcode estándar, recibirás advertencias si las configuraciones no son coherentes en todo el gráfico de dependencias. Esto ayuda a garantizar la fiabilidad de la compilación y evita problemas relacionados con la configuración.
Proyectos generados
Carpetas construibles
Tuist 4.62.0 añadido soporte para carpetas construibles (grupos sincronizados de Xcode), una característica introducida en Xcode 16 para reducir los conflictos de fusión.
Aunque los patrones comodín de Tuist (por ejemplo, Sources/**/*.swift) ya eliminan los conflictos de fusión en los proyectos generados, las carpetas construibles ofrecen ventajas adicionales:
- Sincronización automática: La estructura del proyecto se mantiene sincronizada con el sistema de archivos, sin necesidad de regeneración al añadir o eliminar archivos.
- Flujos de trabajo compatibles con IA: Los asistentes y agentes de codificación pueden modificar su código base sin provocar la regeneración del proyecto.
- Configuración más sencilla: Definir rutas de carpetas en lugar de gestionar listas explícitas de archivos.
Recomendamos adoptar carpetas compilables en lugar de los atributos tradicionales Target.sources y Target.resources para una experiencia de desarrollo más ágil.
::: grupo de códigos
swift
let target = Target(
name: "App",
buildableFolders: ["App/Sources", "App/Resources"]
)swift
let target = Target(
name: "App",
sources: ["App/Sources/**"],
resources: ["App/Resources/**"]
):::
Dependencias
Forzar versiones resueltas en CI
Cuando instale dependencias del Gestor de Paquetes Swift en CI, le recomendamos que utilice la opción --force-resolved-versions para garantizar compilaciones deterministas:
bash
tuist install --force-resolved-versionsEsta bandera asegura que las dependencias se resuelven utilizando las versiones exactas fijadas en Package.resolved, eliminando los problemas causados por el no determinismo en la resolución de dependencias. Esto es particularmente importante en CI, donde las compilaciones reproducibles son críticas.
