Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- uiscrollview
- ribs
- RxCocoa
- combine
- uitableview
- 리팩토링
- swift documentation
- swiftUI
- Xcode
- map
- HIG
- MVVM
- UICollectionView
- UITextView
- Refactoring
- Human interface guide
- ios
- 스위프트
- Protocol
- 클린 코드
- 리펙터링
- collectionview
- 리펙토링
- 애니메이션
- rxswift
- tableView
- SWIFT
- Observable
- Clean Code
- clean architecture
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 2. Tuist로 모듈화 - tuist init, tuist scaffold, tuist generate 차이 본문
iOS 응용 (swift)
[iOS - swift] 2. Tuist로 모듈화 - tuist init, tuist scaffold, tuist generate 차이
jake-kim 2023. 3. 12. 21:17* 목차
tuist init, tuist scaffold, tuist generate 차이
- tuist init: 처음 프로젝트를 만들때, Project.swift, Targets 등 기본적인 구조를 처음부터 생성할때 사용하는 명령어
- 보통 커스텀하여 필요한 것만 생성해야하므로 tuist init을 사용하는것보단 scaffold를 주로 사용
- 가장 적절한 사용 방법은 tuist scaffold > tuist generate 순서로 사용
- tuist scaffold를 이용하여 Templates 토대로 파일들과 Project.swift 파일을 생성해주도록 하고, tuist generate는 Project.swift를 보고 info.plist, .xcworkspace와 같은 본격적으로 개발을 시작할 수 있는 파일들을 생성
(비어있는 폴더에서 tuist init한 결과)
.
├── Plugins
│ └── Test
│ ├── Package.swift
│ ├── Plugin.swift
│ ├── ProjectDescriptionHelpers
│ │ └── LocalHelper.swift
│ └── Sources
│ └── tuist-my-cli
│ └── main.swift
├── Project.swift
├── Targets
│ ├── Test
│ │ ├── Resources
│ │ │ └── LaunchScreen.storyboard
│ │ ├── Sources
│ │ │ └── AppDelegate.swift
│ │ └── Tests
│ │ └── AppTests.swift
│ ├── TestKit
│ │ ├── Sources
│ │ │ └── TestKit.swift
│ │ └── Tests
│ │ └── TestKitTests.swift
│ └── TestUI
│ ├── Sources
│ │ └── TestUI.swift
│ └── Tests
│ └── TestUITests.swift
└── Tuist
├── Config.swift
└── ProjectDescriptionHelpers
└── Project+Templates.swift
- tuist scaffold: 이전 포스팅 글(Tuist와 템플릿 사용 방법)에서 보았듯이, 특정 템플릿(.stencil, .swift)를 이용하여 지정한 경로 및 .swift 파일들을 템플릿에 맞게 생성해주는 역할 (여기서 Project.swift도 생성하는게 목적)
(이전 포스팅 글에서 알아본대로 아래처럼 파일들을 준비하고)
주의)
1) 이름을 꼭 Tuist, Templates으로 아래처럼 설정해야 동작함
2) Templates하위에 있는 폴더 이름과 그 폴더 안에 있는 .swift 파일 이름이 동일해야함 (jake 디렉토리 == jake.swift)
.
└── Tuist
└── Templates
└── jake
├── Project.stencil
└── jake.swift
// Project.stencil
import ProjectDescription
let project = Project(
name: "{{ name }}",
targets: [
Target(
name: "{{ name }}",
platform: .iOS,
product: .app,
bundleId: "com.jake.{{ name }}",
infoPlist: .extendingDefault(with: [
"CFBundleShortVersionString": "1.0",
"CFBundleVersion": "1",
"UILaunchStoryboardName": "LaunchScreen"
]),
dependencies: [
]
)
]
)
// jake.swift
import ProjectDescription
let nameAttribute: Template.Attribute = .required("name")
let template = Template(
description: "Custom template",
attributes: [
nameAttribute
],
items: [
.file(
path: "Project.swift",
templatePath: "Project.stencil"
)
]
)
(명령어 tuist scaffold jake --name MyApp 실행하면, Project.swift 파일 생성)
.
└── Tuist
├── Project.swift
└── Templates
└── jake
├── Project.stencil
└── jake.swift
(생성된 Project.swift 파일)
import ProjectDescription
let project = Project(
name: "MyApp",
targets: [
Target(
name: "MyApp",
platform: .iOS,
product: .app,
bundleId: "com.jake.MyApp",
infoPlist: .extendingDefault(with: [
"CFBundleShortVersionString": "1.0",
"CFBundleVersion": "1",
"UILaunchStoryboardName": "LaunchScreen"
]),
dependencies: [
]
)
]
)
- tuist generate: Project.swift를 보고 info.plist, .xcworkspace와 같은 본격적으로 개발을 시작할 수 있는 파일들을 생성
(tuist generate 결과 - .xcworkspace 파일도 생성)
.
├── Derived
│ └── InfoPlists
│ └── MyApp-Info.plist
├── MyApp.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── xcshareddata
│ │ ├── xcdebugger
│ │ └── xcschemes
│ │ └── MyApp.xcscheme
│ └── xcuserdata
│ └── gimjong-gwon.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
├── MyApp.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ ├── WorkspaceSettings.xcsettings
│ │ ├── swiftpm
│ │ │ └── configuration
│ │ └── xcschemes
│ │ └── MyApp-Workspace.xcscheme
│ └── xcuserdata
│ └── gimjong-gwon.xcuserdatad
│ ├── UserInterfaceState.xcuserstate
│ └── xcschemes
│ └── xcschememanagement.plist
├── Project.swift
└── Tuist
└── Templates
└── jake
├── Project.stencil
└── jake.swift
* 전체 코드: https://github.com/JK0369/ExTuist_2
* 참고
'iOS 응용 (swift)' 카테고리의 다른 글
Comments