Skip to content

Traducción 🌍

Traduce o mejora la traducción de esta página.

Contribuye

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 generate
bash
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.yaml
bash
/
  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 los

archivos 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")) 

Released under the MIT License.