iOS App Scaffold 是一个用于快速创建 iOS 应用项目的脚手架工具,基于 Tuist、Swift 6 和分层架构。它通过脚本自动生成项目结构,帮助开发者跳过繁琐的初始配置,直接进入业务开发。
用途
该工具主要用于:(1) 创建新的 iOS 应用项目;(2) 设置 Tuist 项目结构。它适合希望采用分层架构(Domain、Infrastructure、App)并集成 SwiftData 持久化的 iOS 开发者。
主要能力
- 通过 Python 脚本一键生成完整的 iOS 项目骨架。
- 生成分层架构目录:Domain(业务逻辑,无依赖)、Infrastructure(SwiftData 持久化实现)、App(SwiftUI 视图与应用入口)。
- 自动创建 Tuist 配置文件(Project.swift、Tuist.swift)、.gitignore 和 README.md。
- 包含测试目录(DomainTests、InfrastructureTests)。
- 提供 XCConfig 文件管理构建配置(shared、debug、release)。
- 支持通过 Project.swift 添加远程 Swift Package 依赖。
- 版本号通过 Project.swift 的构建设置管理,Info.plist 引用构建变量。
使用方式
运行脚手架脚本:
python3 scripts/scaffold.py <AppName> <output-directory> [--bundle-id <id>] [--team-id <id>]
示例:
python3 scripts/scaffold.py MyApp /Users/me/projects --bundle-id com.mycompany.myapp --team-id ABC123
然后生成并打开项目:
cd /Users/me/projects/MyApp
tuist generate
open MyApp.xcworkspace
生成的结构包括:
- Sources/App/:SwiftUI 视图、应用入口、资源、XCConfig、Info.plist、AppNameApp.swift
- Sources/Domain/:Models、Protocols(@Mockable 仓库接口)、Utils
- Sources/Infrastructure/Local/:SwiftData 仓库实现
- Tests/:DomainTests、InfrastructureTests
- Project.swift、Tuist.swift、.gitignore、README.md
脚手架生成后,可替换示例文件(Example.swift、ExampleRepository.swift、LocalExampleRepository.swift),添加领域模型、定义协议、实现持久化、构建 UI。
添加依赖:编辑 Project.swift 的 packages 数组,例如:
packages: [
.remote(url: "https://github.com/Kolos65/Mockable.git", requirement: .upToNextMajor(from: "0.5.0")),
],
然后在目标依赖中添加:
dependencies: [
.package(product: "PackageName"),
]
版本管理:在 Project.swift 的构建设置中修改 MARKETING_VERSION 和 CURRENT_PROJECT_VERSION。
XCConfig:编辑 Sources/App/Resources/XCConfig/shared.xcconfig 可自定义 PRODUCT_BUNDLE_IDENTIFIER、DEVELOPMENT_TEAM、IPHONEOS_DEPLOYMENT_TARGET 等。
适用场景
- 需要快速启动新的 iOS 应用项目。
- 希望采用分层架构(Domain、Infrastructure、App)组织代码。
- 使用 Tuist 管理 Xcode 项目。
- 需要集成 SwiftData 进行本地持久化。
- 希望使用 @Mockable 协议进行测试驱动开发。
限制
- 资料中未提供对具体平台版本、系统要求或兼容性的详细说明。
- 未提及收费、价格或授权信息。
- 未提供除 Tuist、Swift 6、SwiftData 之外的其他技术栈支持说明。
- 未说明脚本运行的环境依赖(如 Python 版本、Tuist 版本要求)。