Ir al contenido

Crear un proyecto generado

La forma más fácil de empezar con Tuist en cualquier directorio o en el directorio de un proyecto existente:

bash
mise x tuist@latest -- tuist init
bash
tuist init

El comando te guiará paso a paso para crear un proyecto generado o integrar un proyecto o espacio de trabajo de Xcode existente. Te ayuda a conectar tu configuración con el servidor remoto, dándote acceso a funcionalidades como tests selectivos, previews y el registry.

Migrar un proyecto existente

Si quieres migrar un proyecto existente a proyectos generados para mejorar la experiencia de desarrollo y aprovechar nuestra caché, consulta nuestra guía de migración.

Añadir dependencias#

Es habitual que los proyectos dependan de bibliotecas de terceros para aportar funcionalidad adicional. Para ello, ejecuta el siguiente comando y obtén la mejor experiencia al editar tu proyecto:

bash
tuist edit

Se abrirá un proyecto de Xcode con los archivos de tu proyecto. Edita el Package.swift y añade la

swift
// swift-tools-version: 5.9
import PackageDescription
#if TUIST
import ProjectDescription
let packageSettings = PackageSettings(
// Customize the product types for specific package product
// Default is .staticFramework
// productTypes: ["Alamofire": .framework,]
productTypes: [:]
)
#endif
let package = Package(
name: "MyApp",
dependencies: [
// Add your own dependencies here:
// .package(url: "https://github.com/Alamofire/Alamofire", from: "5.0.0"),
// You can read more about dependencies here: https://docs.tuist.io/documentation/tuist/dependencies
.package(url: "https://github.com/onevcat/Kingfisher", .upToNextMajor(from: "7.12.0")) // [!code ++]
]
)

A continuación, edita el target de la aplicación en tu proyecto para declarar Kingfisher como dependencia:

swift
import ProjectDescription
let project = Project(
name: "MyApp",
targets: [
.target(
name: "MyApp",
destinations: .iOS,
product: .app,
bundleId: "dev.tuist.MyApp",
infoPlist: .extendingDefault(
with: [
"UILaunchStoryboardName": "LaunchScreen.storyboard",
]
),
buildableFolders: [
"MyApp/Sources",
"MyApp/Resources",
],
dependencies: [
.external(name: "Kingfisher") // [!code ++]
]
),
.target(
name: "MyAppTests",
destinations: .iOS,
product: .unitTests,
bundleId: "dev.tuist.MyAppTests",
infoPlist: .default,
sources: ["MyApp/Tests/**"],
resources: [],
dependencies: [.target(name: "MyApp")]
),
]
)

Después, ejecuta tuist install para resolver y descargar las dependencias mediante el Swift Package Manager.

SPM como resolvedor de dependencias

El enfoque recomendado por Tuist para las dependencias utiliza el Swift Package Manager (SPM) únicamente para resolverlas. Luego, Tuist las convierte en proyectos y targets de Xcode para ofrecer la máxima configurabilidad y control.

Visualizar el proyecto#

Puedes visualizar la estructura del proyecto ejecutando:

bash
tuist graph

El comando generará y abrirá un archivo graph.png en el directorio del proyecto:

Grafo del proyecto

Usar la dependencia#

Ejecuta tuist generate para abrir el proyecto en Xcode y realiza los siguientes cambios en el archivo ContentView.swift:

swift
import SwiftUI
import Kingfisher // [!code ++]
public struct ContentView: View {
public init() {}
public var body: some View {
Text("Hello, World!") // [!code --]
.padding() // [!code --]
KFImage(URL(string: "https://cloud.tuist.io/images/[email protected]")!) // [!code ++]
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

Ejecuta la app desde Xcode y deberías ver la imagen cargada desde la URL.