Skip to content

yourssu/Do-Forest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

based on https://github.com/baekteun/Tuist_Modular_Template

레이어

Features - Services - Core - UserInterface - Shared 5개의 레이어를 가집니다.

  • Feature
    • 사용자의 액션을 처리하거나 데이터를 보여주는, 사용자와 직접 맞닿는 레이어
    • ex) AuthFeature, ProfileFeature
  • Domain
    • 도메인 로직이 진행되는 레이어
    • ex) AuthDomain, ProfileDomain
  • Core
    • 앱의 비즈니스를 포함하지 않고 순수 기능성 모듈이 위치한 레이어
    • ex) NetworkingModule, DatabaseModule
  • UserInterface
    • 공용 View, 디자인 시스템, 리소스 등 UI 요소 모듈이 위치한 레이어
    • ex) DesignSystem, LocalizableManager
  • Shared
    • 로깅, extension 등 모든 레이어에서 공용으로 재사용될 모듈이 위치한 레이어
    • ex) UtilityModule, LoggingModule

Micro Feature

각 모듈은 Micro Feature 구조를 기반으로 설계됩니다. 확장 가능하고 커지는 프로젝트를 기능별로 수평 확장이 가능하도록 Micro Service에서 영감을 얻은 아키텍쳐입니다.

프로젝트 세팅

프로젝트 루트에서 make init 를 실행하여, 프로젝트 이름과 organization 이름을 입력하여 기본 설정을 할 수 있습니다.

프로젝트 루트에서 make signing를 실행하면 프로젝트 Team Signing을 할 수 있습니다.

모듈 생성

프로젝트 루트에서 make module를 실행하면 모듈 레이어, 이름, Micro Feature 종류를 선택하여 새 모듈을 생성합니다.

Makefile

프로젝트 루트에서 실행할 수 있는 명령어입니다.

  • make init : 프로젝트 이름과 organization을 입력하여 프로젝트 기본 세팅

    • swift Scripts/InitEnvironment.swift
  • make signing : 프로젝트 Team Signing

    • swift Scripts/CodeSigning.swift
  • make generate : 외부 디펜던시 fetch 및 프로젝트 generate

    • tuist fetch
    • tuist generate
  • make module : 모듈 생성

    • swift Scripts/GenerateModule.swift
  • make dependency : 디펜던시 추가

    • swift Scripts/NewDependency.swift
  • make ci_generate : 디펜던시 fetch 및 CI용 프로젝트 generate (SwiftLint X)

    • tuist fetch
    • TUIST_ENV=CI tuist generate
  • make cd_generate : 디펜던시 fetch 및 CI용 프로젝트 generate (SwiftLint X)

    • tuist fetch
    • TUIST_ENV=CD tuist generate
  • make clean : 전체 xcodeproj, xcworkspace 파일 삭제

    • rm -rf **/*.xcodeproj
    • rm -rf *.xcworkspace
  • make reset : tuist clean 후, 전체 xcodeproj, xcworkspace 파일 삭제

    • tuist clean
    • rm -rf **/*.xcodeproj
    • rm -rf *.xcworkspace

Scaffold

tuist Scaffold(Demo/Interface/Sources/Testing/Tests/UITests) 
  --layer (Features/Services/Core/Shared/UserInterface 레이어 이름)
  --name (모듈 이름)

으로 Project 모듈의 Target 모듈을 직접 생성 가능합니다.

사용법

처음엔 make init으로 프로젝트 이름과 organization을 생성한다. 기본적으로 각 레이어에 하나씩 디폴트로 들어가있다.

  • Feature
    • BaseFeature
  • Domain
    • BaseDomain
  • Core
    • Networking
  • UserInterface
    • DesignSystem
  • Shared
    • GlobalThirdPartyLibrary

모듈 생성 시 make module 명령어로 해당 모듈이 가질 모듈을 전부 생성. 만약 잘못 생성했다면, Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths 로 가서 해당 case를 지워주고, Projects 폴더 하위에 생성된 폴더를 삭제해야 한다. 만든 모듈을 연결하려면 Projects 폴더 하위에 Project.swift 파일에 dependencies 배열 안에 넣어주어야 한다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages