티스토리 뷰
Tuist 4.7.0 기반
[ 문서 ]
Tuist Docs 를 보면 다음과 같이 나와있다.
1) Cache Warming
Tuist가 종속성 그래프의 각 대상에 대해 해시를 효율적으로 활용하여 변경 사항을 감지합니다. 이 데이터를 활용하여 Tuist는 이러한 대상에서 파생된 이진 파일에 고유한 식별자를 빌드하고 할당합니다. 그런 다음 Tuist는 그래프 생성 시에 원래의 대상을 그에 해당하는 이진 버전으로 원활하게 대체합니다.
이 작업은 "캐시 워밍"이라고 불리며, 로컬 사용이나 Tuist Cloud를 통해 팀원 및 CI 환경과 공유하기 위한 이진 파일을 생성합니다. 캐시를 워밍하는 과정은 간단하며 다음 명령으로 시작할 수 있습니다.
tuist cache
팁: 캐시를 워밍하기 위해 별도의 CI 파이프라인을 설정하는 것을 권장합니다. 이렇게 하면 팀의 개발자가 해당 이진 파일에 액세스하여 로컬 빌드 시간을 줄일 수 있습니다.
2) Using the cache binaries
기본적으로 Tuist 명령이 프로젝트 생성을 필요로 할 때, 사용 가능한 경우 캐시에서 종속성을 이진 동등물로 자동으로 대체합니다.
또한 특정 대상에 초점을 맞출 경우, 해당 대상에 의존하는 대상도 사용 가능한 경우 이진 파일로 대체합니다. 다른 접근 방식을 선호하는 사람들을 위해 이 동작을 완전히 사용하지 않도록 선택할 수 있는 옵션이 있습니다.
# 프로젝트 생성
tuist generate # 종속성만
tuist generate Search # 종속성 + Search 종속성
tuist generate Search Settings # 종속성, 그리고 Search 및 Settings 종속성
tuist generate --no-binary-cache # 전혀 캐시하지 않음
# 프로젝트 테스트
tuist test
경고: 이진 캐싱은 앱을 시뮬레이터나 장치에서 실행하거나 테스트하는 것과 같은 개발 워크플로를 위한 기능입니다. 릴리스 빌드를 위한 것이 아닙니다. 앱을 아카이브할 때는 --no-binary-cache 플래그를 사용하여 소스와 함께 프로젝트를 생성하십시오.
---
github 워크샵 문서 에도 해당 내용이 있다.
아래 명령어를 실행하면 dependencies 를 기본으로 캐싱한다.
tuist cache warm
tuist generate
하지만 너의 target 을 캐싱할 수도 있다.
예를들어 Swiftable 에만 집중하고 싶으면 아래의 명령어로 Swiftable 빼고 나머지를 모두
binary caching 을 사용할 수 있다.
(전부 다 라기보다 Swiftable 이 의존하는 것을 캐시로 대체해준다는 뜻 아닐까..?)
tuist generate Swiftable
[ 명령어 ]
[ 실습 ]
Cache 가 아무 것도 없는 상태에서
cache warming 을 해보자.
tuist cache
이제 캐시 적용해보자
tuist generate
진짜 외부의존성만 바이너리 캐시로 교체한다.
TuistApp 의 의존성을 전부 다 대체하도록 명령어 실행해보자
tuist generate TuistApp
해쉬값도 출력해보자
tuist test 도 한번 돌려보자
cache binaries 를 사용한다고 설명이 잘 나온다.
캐시 안쓴다고 돌려보자
tuist generate --no-binary-cache
다시 원복되었다.
여기서 다시 tuist generate 하면 ?
Alamofire (외부의존성) 만 다시 캐싱됨.
그럼 tuist generate 해도 아무것도 캐싱안하는 걸 기본값으로 다시 두고 싶으면 ?
tuist cache --generate-only
인 줄 알았는데 아니고, clean 을 해줘야함! (참고로 위의 명령어는 이때 필요함)
참고로 바이너리 캐쉬만 지우려면 다음 명령어를 사용하면 됨.
tuist clean binaries
GPT 가 알려주는 tuist cache clean 같은 명령어는 없음 ;;;
아무튼 클린 바이너리 명령어 해주고 generate 하면 이제 외부 의존성도 캐시로 대체 안함 !
근데 clean 해도 hash 값은 계속 나옴..
~/.tuist/Cache 랑 DerivedData 지우고 workspace 지워도 계속 나옴 ;;
--- > 잘못 이해했음 ;;; (슬랙)
[ 참고 - xcframework ]
속도 비교 글
https://kwnstantinosnikoloutsos.medium.com/save-time-with-xcframeworks-c12402abfc35
차이가 많이 난다.. (9배정도)
'🍏 > iOS' 카테고리의 다른 글
[Xcode] StaticLinker 의 release, debug 빌드 차이 (-export_dynamic, -no_deduplicate) (2) | 2024.04.20 |
---|---|
[Tuist] StaticFramework 와 Preview (3) | 2024.04.09 |
[Tuist] iOS 에서 Dynamic Library (dylib) 를 직접 만들 수 있는가 ? (1) | 2024.03.29 |
[Tuist] 프로젝트 만들기 (4.7.0 버전) (5) | 2024.03.26 |
[iOS] @dynamicCallable 유용한 예제 모음 (4) | 2024.03.16 |
- Total
- Today
- Yesterday
- DRF APIException
- Dart Factory
- 플러터 얼럿
- github actions
- PencilKit
- Flutter Spacer
- 구글 Geocoding API
- ribs
- ipad multitasking
- flutter build mode
- 장고 Custom Management Command
- METAL
- 플러터 싱글톤
- Watch App for iOS App vs Watch App
- Python Type Hint
- Flutter 로딩
- Flutter Text Gradient
- Django Heroku Scheduler
- Django FCM
- drf custom error
- Flutter Clipboard
- Django Firebase Cloud Messaging
- flutter dynamic link
- Flutter getter setter
- Sketch 누끼
- 장고 URL querystring
- SerializerMethodField
- flutter 앱 출시
- flutter deep link
- cocoapod
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |