티스토리 뷰

Tuist

Tuist - Tuist v4 업데이트

DevDiana 2024. 6. 2. 18:40

안녕하세요 Diana 입니다.

 

프로젝트에 Tuist를 적용하며 공식문서 외에도 많은 블로그들을 참고했었는데 뭔가 안맞는 부분이 많더라구요.

확인해보니 많은 블로그들이 Tuist v3를 기준으로 작성되어 있었고 지금 Tuist v4에서는 몇 가지 변경점이 있었습니다.

 

이 부분을 정리해보려고 합니다.

https://docs.tuist.io/guide/introduction/from-v3-to-v4.html


tuistenv를 통한 버전 관리 삭제

Tuist v4 이전에는 Tuist를 설치할 때 tuistenv가 자동 설치되어 명령어를 통해 Tuist 버전을 관리하거나 .tuist-version 파일에 Tuist 버전을 명시해 버전을 고정할 수 있었습니다.

하지만 이 부분이 Tuist v4에서는 완전히 삭제되었고 curl-Ls https://install.tuist.io | bash 명령어를 통한 설치 또한 deprecated 되어 더이상 추천되지 않습니다.

 

이제 Tuist 설치를 위해서는 mise 또는 Homebrew 사용이 권장됩니다.

 

✅  ProjectDescription 모델들의 init 생성자들 삭제

ProjectDescription을 작성할 때 Target 설정을 위해 Target(...) 이렇게 사용했던 것이 Target.target(...)으로 변경되었습니다.

이 부분은 Target, Schema, Arguments 와 같은 ProjectDescription 모델들 모두 해당됩니다.

이제 사용을 위해서 .target(...) 이렇게만 작성해주면 됩니다.

 

✅ --no-cache가 --no-binary-cache로 Rename

모호했던 --no-cache 플래그가 --no-binary-cache로 변경되었습니다.

 

✅ tuist fetch 명령어 tuist install로 변경

Tuist v4 이전에는 의존성 설정을 위해 tuist fetch라는 명령어를 사용했었는데 이 부분이 tuist install로 변경되었습니다.

이전 curl-Ls https://install.tuist.io | bash 명령어로 Tuist를 설치하신 분들은 Tuist 를 삭제한 뒤 mise 또는 homebrew로 재설치 해야 이 변경사항이 반영됩니다.

 

✅ Dependency 관리 Dependencies.swift -> Package.swift로 변경

Tuist v4 이전에는 의존성 관리를 위해 Dependencies.swift를 생성하여 관리해주었는데요.

Tuist v4에서는 이 Dependencies.swift가 삭제되고 Package.swift를 통해 Dependencies를 관리하도록 변경되었습니다.

 

KakaoMapsSDK 사용을 예를 들면 코드는 아래와 같습니다.

import PackageDescription

#if TUIST
    import ProjectDescription

    let packageSettings = PackageSettings(
        productTypes: ["KakaoMapsSDK-SPM": .framework]
    )
#endif

let package = Package(
    name: "DemoProject",
    dependencies: [
        .package(url: "https://github.com/kakao-mapsSDK/KakaoMapsSDK-SPM.git", from: "2.9.3")
    ]
)

 

그리고 여담으로 Tuist는 3 버전부터 Tuist는 Cocoapods 를 통한 Dependency 관리를 지양하고 있는데요.

지양은 하지만 가능은 하며 이와 더불어 평소에 Xcode에서 SPM으로 Dependency를 추가하듯 Dependency를 추가하는 방법 또한 추천되지 않지만 가능은 합니다.

 

이 부분을 추가하는 이유는 아직까지 Cocoapods만 지원하는 라이브러리(예를 들면 Naver Map SDK)나 Package.swift를 통한 Dependency 추가가 잘 안되는 경우(예를 들면 Kakao Maps SDK)가 있어서요!

 

이런 경우에는 해당 부분을 고려하면 도움이 될 것 같습니다.

 

✅ tuist cach warm 명령어 tuist cache로 변경

tuist cach warm 명령어가 tuist cache로 변경되었습니다.

 

✅ tuist cache print-hashes 명령어 tuist cache --print-hashes로 변경

tuist cach print-hashed 명령어가 tuist cache --print-hashes로 변경되었습니다.

✅ Config.swift 삭제

Tuist v4 이전에는 Tuist/Config.swift 파일을 통해 캐싱 프로파일을 정의했습니다.

하지만 이 부분은 혼동을 일으킬 수 있어 삭제되었고 대신 cache 명령어의 옵션에 --configuration을 추가하여 프로젝트 생성 시 configuration을 지정할 수 있게 되었습니다.

 

✅ --skip-cache 삭제

--skip-cache 명령어가 tuist generate --skip-cache Foo로 변경되었습니다.

Signing capabilities 기능 Drop

Signing은 이미 Fastlane나 Xcode 자체 등의 툴에서 더욱 잘 지원해주고 있기 때문에 Tuist에서 드롭되었습니다.

드롭된 이유 중 하나가 Signing이 Tuist의 확장된 목표기 때문에 Tuist는 핵심기능에 집중하겠다고 하네요.

Dependencies.swift를 통한 Carthage(카르타고) 지원 중단

Tuist v4 이전에는 Dependencies.swift를 통해 카르타고 Dependency를 정의할 수 있었습니다.

하지만 Tuist는 Swift Package Manager가 미래 Dendency 관리 툴에 더 적합하다고 보아 해당 기능을 지원 중단하기로 결정하였습니다.

TargetDependency.packagePlugin API Drop

Tuist v4 이전에는 TargetDependency.packagePlugin을 통해 패키지 플러그인을 정의할 수 있었지만, 이후 Swift Package Manager가 새로운 패키지 타입을 소개함에 따라 미래 좀더 유연하고 검증된 방향으로 API를 변경하기로 하였습니다.

현재 TargetDependency.packagePlugin을 사용하고 있다면 이제는 TargetDependency.package를 사용하라고 하네요.

Deprecated된 API 들 삭제

Deprecated 된 API들이 삭제되었습니다.

 

위에 내용들 중 몇몇은 모르고 Tuist를 설정했다가 한참을 고생했던 부분이었는데요,

이렇게 한번 정리해놓으면 나중에 사용할 때 큰 도움이 될 것 같네요!

 

오늘은 Tuist가 v4로 업데이트 되며 변경된 사항을 알아보았습니다.

'Tuist' 카테고리의 다른 글

Tuist - KakaoMapsSDK v.2 with Tuist v.4  (0) 2024.06.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함