ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Tuist 4.x] Tuist External Dependencies 관련
    iOS Dev 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를 해보면 잘 들어오고, 코드 자동완성 및 실행도 잘 되는 것을 확인할 수 있다.

    반응형

    댓글

Designed by Tistory.