Migrar un proyecto XcodeGen
XcodeGen es una herramienta de generación de proyectos que utiliza YAML como formato de configuración para definir proyectos Xcode. Muchas organizaciones la adoptaron tratando de escapar de los frecuentes conflictos Git que surgen al trabajar con proyectos Xcode. Sin embargo, los frecuentes conflictos de Git son sólo uno de los muchos problemas que experimentan las organizaciones. Xcode expone a los desarrolladores a un montón de complejidades y configuraciones implícitas que dificultan el mantenimiento y la optimización de proyectos a escala. XcodeGen se queda corto ahí por diseño, porque es una herramienta que genera proyectos Xcode, no un gestor de proyectos. Si necesitas una herramienta que te ayude más allá de la generación de proyectos Xcode, es posible que desees considerar Tuist.
SWIFT SOBRE YAML
Muchas organizaciones prefieren Tuist como herramienta de generación de proyectos también porque utiliza Swift como formato de configuración. Swift es un lenguaje de programación con el que los desarrolladores están familiarizados y que les proporciona la comodidad de utilizar las funciones de autocompletado, comprobación de tipos y validación de Xcode.
Lo que sigue son algunas consideraciones y directrices para ayudarte a migrar tus proyectos de XcodeGen a Tuist.
Generación de proyectos
Tanto Tuist como XcodeGen proporcionan un comando generate que convierte tu declaración de proyecto en proyectos y espacios de trabajo de Xcode.
::: grupo de códigos
bash
xcodegen generatebash
tuist generate:::
La diferencia radica en la experiencia de edición. Con Tuist, puedes ejecutar el comando tuist edit, que genera un proyecto Xcode sobre la marcha que puedes abrir y empezar a trabajar en él. Esto es especialmente útil cuando quieres hacer cambios rápidos en tu proyecto.
project.yaml
El archivo de descripción project.yaml de XcodeGen se convierte en Project.swift. Además, puede tener Workspace.swift como una forma de personalizar cómo se agrupan los proyectos en espacios de trabajo. También puedes tener un proyecto Project.swift con objetivos que hagan referencia a objetivos de otros proyectos. En esos casos, Tuist generará un Xcode Workspace incluyendo todos los proyectos.
::: grupo de códigos
bash
/
project.yamlbash
/
Tuist.swift
Project.swift
Workspace.swift:::
LENGUAJE DE XCODE
Tanto XcodeGen como Tuist adoptan el lenguaje y los conceptos de Xcode. Sin embargo, la configuración basada en Swift de Tuist te ofrece la comodidad de utilizar las funciones de autocompletado, comprobación de tipos y validación de Xcode.
Plantillas de especificaciones
Una de las desventajas de YAML como lenguaje para la configuración de proyectos es que no permite la reutilización de archivos YAML. Esta es una necesidad común al describir proyectos, que XcodeGen tuvo que resolver con su propia solución propietaria llamada "templates". Con Tuist la reutilización está integrada en el propio lenguaje, Swift, y a través de un módulo Swift llamado
project description helpers, que permite la reutilización de código en todos losarchivos de manifiesto.
::: grupo de códigos
swift
import ProjectDescription
extension Target {
/**
This function is a factory of targets that together represent a feature.
*/
static func featureTargets(name: String) -> [Target] {
// ...
}
}swift
import ProjectDescription
import ProjectDescriptionHelpers
let project = Project(name: "MyProject",
targets: Target.featureTargets(name: "MyFeature")) 