iOS Dev

[Tuist 4.x] Tuist External Dependencies 관련

Mosu(정종인) 2024. 3. 14. 22:39
반응형

공식 홈페이지에서는 Package.swift에 external dependency를 추가해서 관리할 수 있다고 나와있다.

하지만 그대로 따라하면 안된다..

 

우선 https://sunrinnote.tistory.com/187 여기를 모두 진행했다는 가정 하에

mise exec -- tuist init --platform ios

위 명령어로 프로젝트를 새로 시작한다고 가정한다.

 

1. Tuist 폴더 생성, Package.swift 파일 생성

원래는 init할 때 자동으로 Tuist 폴더가 생기고, ProjectDescriptionHelper 폴더가 생겼던 걸로 기억하는데, 바뀐 버전에서는 생기지 않는다.

우선 Tuist 폴더를 만들어주고, 그 안에 Package.swift 파일을 만들어준다.

파일의 내용은 예시에 나와있는 그대로 하면 안되고, import ProjectDescriptionHelper  라인을 지워주어야 한다. (파일 내용 수정은 mise exec -- tuist edit 으로 수정해도 되고, 그냥 파일 내용을 넣어줘도 된다.)

// swift-tools-version: 5.9
import PackageDescription


#if TUIST
import ProjectDescription


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"),
    ]
)

 

2. Project.swift 파일 수정

테스트용으로 dependencies에 .external로 Alamofire를 넣어준다.

import ProjectDescription

let project = Project(
    name: "TuistTest1",
    targets: [
        .target(
            name: "TuistTest1",
            destinations: .iOS,
            product: .app,
            bundleId: "io.tuist.TuistTest1",
            infoPlist: .extendingDefault(
                with: [
                    "UILaunchStoryboardName": "LaunchScreen.storyboard",
                ]
            ),
            sources: ["TuistTest1/Sources/**"],
            resources: ["TuistTest1/Resources/**"],
            dependencies: [
                .external(name: "Alamofire", condition: .none)
            ]
        ),
        .target(
            name: "TuistTest1Tests",
            destinations: .iOS,
            product: .unitTests,
            bundleId: "io.tuist.TuistTest1Tests",
            infoPlist: .default,
            sources: ["TuistTest1/Tests/**"],
            resources: [],
            dependencies: [.target(name: "TuistTest1")]
        ),
    ]
)

 

3. install & generate

edit으로 열린 창을 모두 저장 & 닫고 다음 두 명령어를 실행한다.

mise exec -- tuist install

mise exec -- tuist generate

install하면 의존성이 설치될 것이고, generate하면, 프로젝트 파일들이 만들어지면서 자동으로 .xcworkspace 파일을 실행한다.

 

아무 파일에서 import Alamofire를 해보면 잘 들어오고, 코드 자동완성 및 실행도 잘 되는 것을 확인할 수 있다.

반응형