跳转到内容

创建生成的项目

创建生成的项目 {#create-a-generated-project}

Section titled “创建生成的项目 {#create-a-generated-project}”

在任何目录或现有项目目录中开始使用 Tuist 的最简单方法:

::: code-group

Terminal window
mise x tuist@latest -- tuist init
Terminal window
tuist init

:::

该命令将引导您完成 创建生成的项目 或集成现有 Xcode 项目或工作区的步骤。它帮助您将设置连接到远程服务器,使您可以访问 选择性测试预览注册表 等功能。

::: info 迁移现有项目

如果您想将现有项目迁移到生成的项目以改善开发体验并利用我们的 缓存,请查看我们的 迁移指南

:::

项目通常依赖第三方库来提供附加功能。为此,运行以下命令以获得最佳的项目编辑体验:

Terminal window
tuist edit

将打开一个包含您项目文件的 Xcode 项目。编辑 Package.swift 并添加

5.9
import PackageDescription
#if TUIST
import ProjectDescription
let packageSettings = PackageSettings(
// 为特定的包产品自定义产品类型
// 默认为 .staticFramework
// productTypes: ["Alamofire": .framework,]
productTypes: [:]
)
#endif
let package = Package(
name: "MyApp",
dependencies: [
// 在此处添加您自己的依赖项:
// .package(url: "https://github.com/Alamofire/Alamofire", from: "5.0.0"),
// 您可以在此处了解有关依赖项的更多信息:https://docs.tuist.io/documentation/tuist/dependencies
.package(url: "https://github.com/onevcat/Kingfisher", .upToNextMajor(from: "7.12.0")) // [!code ++]
]
)

然后编辑项目中的应用目标,将 Kingfisher 声明为依赖项:

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 解析和拉取依赖项。

::: info SPM 作为依赖解析器

Tuist 推荐的依赖项方法仅使用 Swift Package Manager (SPM) 来解析依赖项。然后 Tuist 将它们转换为 Xcode 项目和目标,以获得最大的可配置性和控制权。

:::

您可以通过运行以下命令来可视化项目结构:

Terminal window
tuist graph

该命令将在项目目录中输出并打开一个 graph.png 文件:

项目图

运行 tuist generate 在 Xcode 中打开项目,并对 ContentView.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 加载的图像。