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:
mise x tuist@latest -- tuist init
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.
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:
tuist edit
Se abrirá un proyecto de Xcode con los archivos de tu proyecto. Edita el Package.swift y añade la
// 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:
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.
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:
tuist graph
El comando generará y abrirá un archivo graph.png en el directorio del proyecto:

Usar la dependencia#
Ejecuta tuist generate para abrir el proyecto en Xcode y realiza los siguientes cambios en el archivo ContentView.swift:
import SwiftUI
import Kingfisher // [!code ++]
public struct ContentView: View {
public init() {}
public var body: some View {
Text("Hello, World!") // [!code --]
.padding() // [!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.