회사에서 감사하게도 RIBs + Tuist로 개발할 수 있는 기회가 주어졌는데(안해줄 것 같았는데..), 아무래도 처음 시도 해보는 것들이다보니 기초 지식이 부족해서 샘플 앱을 몇개 더 만들어봐야할 것 같아 기록용으로 남긴다.
일단 가장 먼저 tuist로 프로젝트를 구성한다.
❯ tuist init --platform ios
아래와 같은 구조를 갖게 된다.
❯ tree .
.
├── Project.swift
├── Targets
│ ├── NaverMovie
│ │ ├── Resources
│ │ │ └── LaunchScreen.storyboard
│ │ ├── Sources
│ │ │ └── AppDelegate.swift
│ │ └── Tests
│ │ └── AppTests.swift
│ ├── NaverMovieKit
│ │ ├── Sources
│ │ │ └── NaverMovieKit.swift
│ │ └── Tests
│ │ └── NaverMovieKitTests.swift
│ └── NaverMovieUI
│ ├── Sources
│ │ └── NaverMovieUI.swift
│ └── Tests
│ └── NaverMovieUITests.swift
└── Tuist
├── Config.swift
└── ProjectDescriptionHelpers
└── Project+Templates.swift
13 directories, 10 files
나는 멀티 타겟으로 UI와 Kit을 분리할 생각이 아직 없으니(추후에..) 아래의 명령어로 프로젝트 편집기를 열고 수정해준다.
❯ tuist edit
위 명령어를 입력하면 Xcode로 Manifests
프로젝트가 열리게 되는데 해당 프로젝트에서 Project.swift
가 프로젝트를 구성하는 설정 파일이다.
import ProjectDescription
import ProjectDescriptionHelpers
// MARK: - Project
let project = Project.app(
name: "NaverMovie",
platform: .iOS,
additionalTargets: []
)
참고로 Project의 app 함수는 ProjectDescriptionHelpers/Project+Templates.swift
파일에 정의되어 있다. 나중에 원하는 입맛대로 수정하도록 하자.
입맛대로 수정했다면 터미널에서 Ctrl + C 후에 아래의 명령어를 실행한다
❯ tuist generate
Generating workspace NaverMovie.xcworkspace
Generating project NaverMovie
Project generated.
Total time taken: 6.425s
이제 프로젝트 파일이 생성되었다. 한번 열어서 Sources/AppDelegate.swift
파일을 확인해보자.
import UIKit
import NaverMovieKit
import NaverMovieUI
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
let viewController = UIViewController()
viewController.view.backgroundColor = .white
window?.rootViewController = viewController
window?.makeKeyAndVisible()
NaverMovieKit.hello()
NaverMovieUI.hello()
return true
}
}
위처럼 작성되어 있을텐데 Kit, UI는 사용하지 않으므로 제거한다. 제거한 뒤 컴파일 에러가 나는지 안나는지 확인하고 다음에는 RIBs를 설치할 수 있도록 하자