Skip to content

[Tuist]

serena.ios edited this page May 20, 2024 · 5 revisions

🍀 Tuist 적용하기

1️⃣ mise CLI 설치하기

mise 란? mise는 [meez]라 발음된다.
이는 Dev tool들과 런타임을 설치하고 관리하여, 이러한 도구 설치를 단순화 하고 다른 프로젝트에서 사용할 도구의 버전을 지정할 수 있게 한다.
mise는 수백 가지의 개발 도구를 지원한다.
mise는 개발자 간에 프로젝트 내에서 일반적인 작업을 공유하고 파일 변경 시 작업을 실행하는 것과 같은 작업을 쉽게 만들어준다.

Getting Started - mise

아래 명령어를 입력하여 설치한다.

curl https://mise.run | sh

mise가 잘 설치되었는지 확인한다.

~/.local/bin/mise --version

mise 2024.x.x 이러한 형태로 출력되면 정상 설치가 된 것이다.

2️⃣ 지정 PATH에 mise 활성화 하기

echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc

3️⃣ mise를 사용하여 Tuist 설치하기

Tuist는 기본적으로 Tuist의 버전을 관리하고 활성화하는 도구로 mise를 사용한다.

Tuist를 설치하기 위한 명령어로 몇가지가 존재한다.

  • 현재 버전으로 Tuist 설치하는 명령어
mise install tuist
  • 특정 버전으로 Tuist 설치하는 명령어
mise install tuist@x.y.z

4️⃣ 새로운 프로젝트 생성하기

  • 프로젝트 파일을 생성할 경로로 들어간다.
cd /...원하는경로
  • 해당 경로에 새 디렉토리를 생성한다.
mkdir MyApp
  • 생성한 디렉토리로 이동한다.
cd MyApp
  • 현 디렉토리에서 프로젝트를 초기화한다.
tuist init --platform ios

이때 Project.swift가 생성된다

import ProjectDescription

let project = Project(
    name: "MyApp",
    targets: [
        .target(
            name: "MyApp",
            destinations: .iOS,
            product: .app,
            bundleId: "io.tuist.MyApp",
            infoPlist: .extendingDefault(
                with: [
                    "UILaunchStoryboardName": "LaunchScreen.storyboard",
                ]
            ),
            sources: ["MyApp/Sources/**"],
            resources: ["MyApp/Resources/**"],
            dependencies: []
        ),
        .target(
            name: "MyAppTests",
            destinations: .iOS,
            product: .unitTests,
            bundleId: "io.tuist.MyAppTests",
            infoPlist: .default,
            sources: ["MyApp/Tests/**"],
            resources: [],
            dependencies: [.target(name: "MyApp")]
        ),
    ]
)
  • 아래 명령어를 사용하여 프로젝트를 편집 실행할 수 있다.
tuist edit

5️⃣ 외부 Dependency 선언

  • Tuist/ 혹은 프로젝트 루트에 Package.swift를 만들어야 한다.

현재 Tuist/Package.swift 로 생성

// swift-tools-version: 5.9
import PackageDescription

#if TUIST
    import ProjectDescription
    import ProjectDescriptionHelpers

    let packageSettings = PackageSettings(
        productTypes: [
            "Alamofire": .framework, // default is .staticFramework
        ]
    )

#endif

let package = Package(
    name: "PackageName",
    dependencies: [
        .package(url: "https://github.com/Alamofire/Alamofire", from: "5.0.0"),

    ]
)
  • 해당 파일은 외부 종속성을 선언하기 위한 인터페이스일뿐이기 때문에 target이나 product를 해당 파일에 정의하지 않는다.

  • 아래 명령어를 사용하여 Tuist/Dependencies 디렉토리에 의존성을 가져올 수 있다.

tuist install
# Resolving and fetching dependencies.
# Installing Swift Package Manager dependencies.
  • Projet.swift 파일에서 TargetDependency.external을 사용하여 해당 의존성을 참조할 수 있다.
import ProjectDescription

let project = Project(
    name: "App",
    organizationName: "tuist.io",
    targets: [
        .target(
            name: "App",
            destinations: [.iPhone],
            product: .app,
            bundleId: "io.tuist.app",
            deploymentTargets: .iOS("13.0"),
            infoPlist: .default,
            sources: ["Targets/App/Sources/**"],
            dependencies: [
                 // 해당 부분
                .external(name: "Alamofire"), 
            ]
        ),
    ]
)

🔥 Dependency Naming 체크하기 Git에 Package 예시 참고해서 이름 체크하기

예시: TCA git/Package.swift

6️⃣ Workspace 생성하기

Tuist WorkSpace

위 세팅이 끝나면 Tuist 설치 확인하기

tuist install

아래 명령어로 workspace 생성하기

tuist generate
스크린샷 2024-05-20 오후 12 52 25

🔗 참고 링크

Clone this wiki locally