Перейти к содержимому

Создание сгенерированного проекта

Самый простой способ начать работу с Tuist в любом каталоге или в каталоге существующего проекта:

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

Команда проведет вас через шаги по созданию сгенерированного проекта или интеграции существующего проекта или рабочей области Xcode. Она поможет подключить вашу среду к удаленному серверу, предоставив доступ к таким возможностям, как выборочное тестирование, превью и реестр.

Миграция существующего проекта

Если вы хотите перенести существующий проект на сгенерированные проекты, чтобы улучшить опыт разработки и воспользоваться нашим кэшем, ознакомьтесь с нашим руководством по миграции.

Добавление зависимостей#

Проекты часто зависят от сторонних библиотек для предоставления дополнительной функциональности. Для этого выполните следующую команду, чтобы получить наилучший опыт редактирования вашего проекта:

bash
tuist edit

Откроется проект Xcode, содержащий файлы вашего проекта. Отредактируйте Package.swift и добавьте

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 ++]
]
)

Затем отредактируйте цель приложения в вашем проекте, чтобы объявить Kingfisher зависимостью:

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")]
),
]
)

Затем выполните tuist install, чтобы разрешить и загрузить зависимости с помощью Swift Package Manager.

SPM как средство разрешения зависимостей

Рекомендуемый Tuist подход к зависимостям использует Swift Package Manager (SPM) только для разрешения зависимостей. Затем Tuist преобразует их в проекты и цели Xcode для максимальной гибкости настройки и контроля.

Визуализация проекта#

Вы можете визуализировать структуру проекта, выполнив:

bash
tuist graph

Команда создаст и откроет файл graph.png в каталоге проекта:

Граф проекта

Использование зависимости#

Выполните tuist generate, чтобы открыть проект в Xcode, и внесите следующие изменения в файл 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()
}
}

Запустите приложение из Xcode, и вы должны увидеть изображение, загруженное по URL.