| 기존 Xcode 프로젝트 방식 문제점 | Tuist의 해결 방식 |
|---|---|
.xcodeproj는 Git 충돌이 잦음 |
선언형 Project.swift로 충돌 없이 관리 가능 |
| 타겟/빌드 설정이 복잡하고 반복적임 | 설정을 코드로 재사용 가능 (템플릿, 헬퍼 등) |
| 수동 설정이 많아 실수 가능성 높음 | 코드 기반이라 버그/설정 누락 줄일 수 있음 |
| 모듈 분리나 멀티 타겟 관리가 번거로움 | Tuist는 멀티 모듈, 타겟 분리를 쉽게 관리 가능 |
CI/CD에서 .xcodeproj 의존성 있음 |
CI에서 tuist generate로 프로젝트 생성 가능 |
MyApp/
├── Project.swift 👈 Xcode 프로젝트 정의
├── Targets/
│ ├── App/
│ │ ├── Sources/
│ │ └── Resources/
│ └── FeatureA/
│ ├── Sources/
│ └── Resources/
├── Tuist/
│ └── Config.swift 👈 전역 설정
└── .gitignore 👈 Tuist가 생성한 파일들은 무시
Tuist의 Prjoject.swift 는 기존에 xcode에서 .xcodeporj 에서 General, Build Settings, Build Phases 등 Xcode UI 로 개발자들이 직접 설정하는 부분을 Swift 언어로 분리하여 관리합니다.
# Tuist
/.build
/.xcodeproj
/.xcworkspace
/Tuist/Generated
/.swiftpm
/Derived
/DerivedData
/Project.xcworkspace
/Project.xcodeproj
# Tuist cache
/.tuist-cache
# Xcode
*.xcuserstate
*.xcscmblueprint
*.xcworkspace
*.xcodeproj
*.xccheckout
# User settings
*.xcuserdatad
*.moved-aside
.gitignore 파일에 Tuist가 생성하는 파일들과 .xcodeporj 관련 파일을 무시하도록 설정하면, 이제 .xcodeproj 파일은 Git으로 관리되지 않게 됩니다.
협업 개발자는 프로젝트를 pull받은 후 Project.swift에 정의된 내용을 기반으로 Tuist CLI를 사용해 Xcode 프로젝트를 생성하면 됩니다. 이제 우리는 .xcodeproj 파일로 인한 Git 충돌에서 완전히 자유로워졌습니다
https://docs.tuist.dev/ko/guides/features/projects/adoption/migrate/xcode-project
공식 가이드문서를 따라 mirgration을 해보며 해당 내용을 상세하게 기록 앱 환경은 Cordova 기반 하이브리드 앱. 외부 의존성은 Firebase SPM으로 사용중입니다.
가이드 문서에서 요구하는 파일을 경로에 생성해줍니다.
MyApp/
├── Tuist.swift 👈 Tuist 설정을 정의(수정한거 없음)
├── Project.swift 👈 Xcode 프로젝트 정의
├── Tuist/
│ └── Package.swift 👈 Xcode 프로젝트 SPM 의존성
Tuist로 마이그레이션하는 과정 중간에 기존 프로젝트를 Xcode로 열어 설정을 확인해야 할 때는, Project.swift의 name 속성에 -Tuist와 같은 접미사를 추가하는 것이 좋습니다.
이렇게 하면 Tuist가 생성한 MyApp-Tuist.xcodeproj 파일과 기존 프로젝트의 MyApp.xcodeproj 파일이 구분되어, 원본 프로젝트가 변경되는 것을 방지할 수 있습니다.
Tuist 설정 파일을 토대로 .xcodeproj를 생성하는 명령어 입니다.
tuist install 👈 Xcode 프로젝트 의존성 설치(내기준 SPM)
tuist generate 👈 Xcode 프로젝트 생성
tuist build 👈 생성된 프로젝트를 빌드해 문제가 없는지 확인
tuist edit 👈 tuist 관련 파일을 xcode로 편집할수 있게 열어줍니다.