Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🌴 PR 요약
🌱 작업한 브랜치
🌱 PR Point
1. 총 2가지 DemoApp 생성 : SOPT-Stamp-Demo / DSKitDemoApp
아래와 같이 스킴에서 선택하여 빌드할 수 있습니다.
2. 두가지 Demo App 구현 방식
위의 그래프를 보면 알 수 있듯, 총 두 가지의 방식으로 DemoApp을 구현했습니다.
먼저 SOPT-Stamp-Demo는 SOPT-Stamp-iOS와 같이 기존 모든 모듈들에 대한 의존성을 가지고 있고, 따라서 다른 모듈에서 구현한 요소들을 사용할 수 있습니다. 단순히 Project 파일을 하나 더 생성하고 소스 파일들에 대한 경로를 지정하는 방식으로 수행했습니다. 이 Demo를 통해 메인 앱에 테스팅하기 곤란한 소스코드들을 테스트해볼 수 있을 것 같습니다.
다음으로 DSKitDemoApp은 기존 DSKit에 .app 속성의 target을 추가하는 식으로 구현했습니다.
위와 같이 hasDemoApp을 true로 설정하고, 아래와 같이 project+template.swift에서 적절히 분기처리 했습니다.
위 사진에서 demoGlobs에 UIFonts+를 excluding하는 것을 확인하실 수 있는데, 이는 Tuist의 ResourceSynthesizers가 만들어 준 DSKitFontsFamily에 대한 의존성을 DSKitDemoApp이 가질 수가 없어서 빌드 에러를 막기 위해 분기처리해준 것입니다. Tuist repository의 discussion을 보니 이전에는 config에서 resource에 대한 참조를 해결할 수 있었던 것 같은데, 지금은 deprecated 되어서 약간은 편법같이 처리했습니다.
📌 논의해 볼 사항
DemoApp의 종류는 적절한가?
일단은 전체 앱에 대한 Demo와 DSKit에 구현된 Components를 테스트하기 위한 Demo, 총 2가지 정도만 생각했는데, 다른 부분에도 필요할 지 이야기해봐도 좋을 것 같아요!
DemoApp을 위한 의존성 구조 재정립
개인적인 생각으로는 SOPT-Stamp-Demo를 구현할 때와 같이 모든 의존성을 참조하여 가져오는 것이 아니라, Presentation, Data에 대한 의존성을 가진 새로운 Feature Module들을 두는 것이 좋아보입니다. 저번에 공유해드린 자료에서도 동일한 방식을 채택하고 있습니다. 또는 Presentation을 제거하고 Domain과 Data에 대한 의존성만 유지하는 방법도 괜찮을 것 같습니다.
📮 관련 이슈