iOSApplicationTemplate
์ด ํ๋ก์ ํธ๋ Tuist๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ํ๋ก์ ํธ๋ฅผ ๋ชจ๋๋ก ๊ตฌ์ฑํ๋ ํํ์ ๋๋ค.
์ฌ์ฉ๋ฒ
-
Install tuist
bash <(curl -Ls https://install.tuist.io)
-
Run Tuist dependencies - (Optional, default installed SDK, path : ${Repository}/Libraries)
$ tuist dependencies fetch # PinLayout์์ ํด๋น ํด๋๋ฅผ ๋น๋ํ๊ธฐ ๋๋ฌธ์ ์๋ฌ ๋ฐ์ํ์ฌ, TestProjects๋ฅผ ์ญ์ ํ๊ณ Carthage๋ฅผ ์ด์ฉํ์ฌ PinLayout๋ฅผ ๋น๋ํจ. $ rm -rf Tuist/Dependencies/Carthage/Checkouts/PinLayout/TestProjects $ carthage build PinLayout --project-directory Tuist/Dependencies --platform iOS --use-xcframeworks --no-use-binaries --use-netrc --cache-builds --verbose # ReactorKit ํ๋ก์ ํธ๋ carthage๋ฅผ ์ง์์ด ์ ์๋๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ํ. $ (cd Tuist/Dependencies/Carthage/Build && rm .ReactorKit.version .WeakMapTable.version) # ์์ฑ ๊ธฐ๋ก ์ญ์ $ (cd Tuist/Dependencies/Carthage/Checkouts/ReactorKit && swift package generate-xcodeproj) # ReactorKit ํ๋ก์ ํธ ์์ฑ $ (cd Tuist/Dependencies/Carthage/Checkouts/WeakMapTable && swift package generate-xcodeproj) # WeakMapTable ํ๋ก์ ํธ ์์ฑ $ tuist dependencies fetch # Carthage ๋น๋ # RIBs ํ๋ก์ ํธ์ RxSwift, RxRelay ์์กด์ฑ์ด framework๋ก ๋์ด ์์ผ๋ฏ๋ก, xcframework๋ก ๊ต์ฒดํจ. $ open Tuist/Dependencies/Carthage/Checkouts/RIBs/ios/RIBs.xcodeproj $ carthage build RIBs --project-directory Tuist/Dependencies --platform iOS --use-xcframeworks --no-use-binaries --use-netrc --cache-builds --verbose # ๊ณ์ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๋ํจ. $ tuist dependencies fetch
-
Run tuist generate
tuist generate
-
Open workspace
open App.xcworkspace
-
Run tuist scaffold
tuist scaffold framework --name UtilityKit -p Projects/Modules/Foundation
Dependency Graph
Tuist๋ฅผ ์ด์ฉํ์ฌ Dependency Graph๋ฅผ ์ถ๋ ฅํ ์ ์์.
$ tuist graph # Graph ์์ฑ
$ tuist graph -t # ํ
์คํธ ํ๊ฒ ์ ์ธ
$ tuist graph -d # ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ธ
$ tuist graph -t -f dot # dot ํ์ผ๋ก ์ถ๋ ฅ
# Tests, Testing, Example ํ๊ฒ์ ์ ์ธํ ๊ทธ๋ํ ์์ฑ
$ ./script/generate_tuist_graph.sh.sh
Tuist
Reference
- tuist/awesome-tuist
- HedvigInsurance/ugglan
- JulianAlonso/MarvelApp
- BendingSpoons/tempura-swift
- fortmarek/ComposableTuistArchitecture
- ronanociosoig/tuist-pokedex
- nimblehq/ios-templates
- vsanthanam/Statio
- vsanthanam/ScoreFive-2
- https://sarunw.com/tags/tuist/
Clean Architecture With Swinject, RIBs
- ํด๋ฆฐ์ํคํ
์ฒ ์ผ๋ถ ์ค๊ณ ์ฐธ๊ณ
- https://github.com/kudoleh/iOS-Clean-Architecture-MVVM.git
- https://medium.com/@kimtaesoo188/android-clean-architecture-2e789d6cefc6, https://miro.medium.com/max/22442/1*FRgFgSG2mu4nRPyhwsPn3Q.png
- https://youngest-programming.tistory.com/484
- https://develogs.tistory.com/7
- Clean Architecture is not Domain-Data-Presentation.
Design System
์ํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก
๋์์ธ์์คํ Ref
- https://medium.com/sketch-app-sources/setting-up-a-design-system-8729510def93
- https://ux.mailchimp.com/patterns/color
- https://brennobemoura.medium.com/implementing-a-design-system-compatible-with-uikit-and-swiftui-1c6da34814f0
- W3.org ๋์์ธ ํจํด ๋ฐ ์์ ฏ
FlexLayout ์ฌ์ฉ๋ฒ ์ฐธ๊ณ
- https://medium.com/swlh/a-swift-yogakit-guide-to-flexbox-fec74e1bffaf
- https://www.raywenderlich.com/530-yoga-tutorial-using-a-cross-platform-layout-engine
- https://yogalayout.com/
Navigation
- Github : justeat/NavigationEngineDemo, Article https://tech.justeattakeaway.com/2019/04/16/deep-linking-at-scale-on-ios/