이 레포지토리는 iOS 프로젝트에 사용하기 위한 템플릿 레포지토리입니다.
프로젝트에 Tuist를 기본으로 사용하게 설정했으며, 필요에 따라 Tuist 대신 다른 프로젝트 관리 도구를 사용하거나, 별도의 프로젝트 관리 도구를 사용하지 않아도 괜찮습니다.
다른 프로젝트 관리 도구를 사용하거나, 프로젝트 관리 도구를 사용하지 않을 때에는 .gitignore 파일의 수정이 필요할 수 있습니다.
아래의 세가지 방법 중 하나를 선택하여 사용하시면 됩니다.
- 이 Repository를 Fork한다.
- New 버튼을 눌러서 새 Repository를 생성한다.
- Repository Template에서 이 Repository Template을 선택한다.
- Use this template 버튼을 눌러서 새 Repository를 만든다.
-
이 Repository를 클론한다.
git clone https://github.com/taek0622/iOS-Repository-Template.git -
숨겨져있는
.git디렉토리를 찾아 삭제한다.rm -rf .git -
새로운 깃 Repository를 생성한다.
git init -
첫번째 commit을 생성한다.
git commit -a -m "Initial commit"
iOS-Repository-Template/
├── .git/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.yml
│ │ ├── chore.yml
│ │ ├── config.yml
│ │ ├── design.yml
│ │ ├── docs.yml
│ │ ├── enhancement.yml
│ │ ├── feature.yml
│ │ ├── refactor.yml
│ │ ├── spike.yml
│ │ └── test.yml
│ ├── .gitmessage
│ ├── CODEOWNERS
│ └── PULL_REQUEST_TEMPLATE.md
├── App/
│ ├── Resources/
│ ├── Sources/
│ │ ├── ContentView.swift
│ │ └── WRITEYOURPROJECTApp.swift
│ └── Tests/
├── Tuist/
│ ├── .swiftpm
│ └── Package.swift
├── .gitignore
├── mise.toml
├── Project.swift
├── README.md
└── Tuist.swift
Tuist 프로젝트 사용시 몇 가지 수정해야 하는 부분이 있습니다.
원하는 프로젝트 이름을 적절한 이름으로 변경합니다.
아래의 예시에서는 이해하기 쉬운 설명을 위해 NewProjectName라고 가정하고 설명했습니다.
-
Project.swift내용 수정- 파일 내부에서
#[WRITE_YOUR_PROJECT_NAME]이라고 적혀있는 부분을 모두 본인의NewProjectName으로 변경합니다. dev.tuist.projectname와dev.tuist.projectnameTests라고 적힌bundleId를 모두 자신이 원하는 bundleId로 적절하게 변경합니다. (ex.com.example.newprojectname) 이때, 프로젝트와 테스트의 bundleId가 같으면 안됩니다.
- 파일 내부에서
-
Tuist/Package.swift내용 수정- 파일 내부에서
#[WRITE_YOUR_PROJECT_NAME]라고 적힌 부분을NewProjectName으로 변경합니다.
- 파일 내부에서
-
App/Sources/WRITEYOURPROJECTApp.swift수정WRITEYOURPROJECTApp.swift부분을NewProjectNameApp.swift로 변경합니다.- 파일 내부의 struct 이름도
NewProjectNameApp으로 변경합니다.
-
App/Tests/WRITEYOURPROJECTTests.swift수정WRITEYOURPROJECTTests.swift부분을NewProjectNameTests.swift로 변경합니다.- 파일 내부의 import는
import NewProjectName로, struct 이름은NewProjectNameTests로 변경합니다.
이후 아래의 명령어로 프로젝트를 시작합니다.
tuist generate이 레포지토리의 이슈 템플릿은 크게 아래의 9가지 레이블을 사용합니다. 깃허브에서 기본적으로 이러한 레이블을 추가해주지 않으므로, 처음 한 번은 직접 아래의 레이블들을 레포지토리에 추가해주셔야 합니다.
type: feature: 새로운 기능 추가type: enhancement: 기존 기능 개선type: refactor: 동작 변경 없는 리팩토링 작업type: chore: 동작 변경 없는 설정 관리 작업(빌드/CI/의존성/스크립트 등)type: design: UI/UX 디자인 변경(화면/컴포넌트/인터랙션)type: bug: 버그 재현/원인/수정 범위 기록type: docs: 문서 작업(README/가이드/API 등)type: test: 테스트 추가/보강/수정type: spike: 조사/프로토타입/기술 검증
이슈의 질문/논의 버튼을 사용하기 위해 설정 및 수정해야 하는 부분입니다.
- 레포지토리 Settings의 General에서
Discussions체크 박스 체크 .github/ISSUE_TEMPLATE/config.yml내용 수정url의<OWNER>를 자신의 github id 혹은 organization id로 변경합니다.<REPO>를 현재 레포지토리 이름으로 변경합니다.
- 프로젝트를 Clone 받은 후 최초 한 번은 터미널 상에서 프로젝트 경로로 들어가서 아래의 명령어를 사용하여
.gitmessage사용
git config --global commit.template .github/.gitmessage- 위의 명령어 실행 후
git commit을 할 때는 아래와 같이 사용할 수 있음
> git add .
> git commit
> git pushCODEOWNERS 파일을 통해 리포지토리의 코드를 담당하는 개인 또는 팀을 정의할 수 있습니다. 설정시 Pull Request를 작성할 때 리뷰어에 해당 사용자가 자동으로 추가됩니다.
.github/CODEOWNERS수정@[your_github_id]에서[your_github_id]를 리뷰어의 아이디로 변경합니다.- 리뷰어가 여러 사람인 경우
@사용자1 @사용자2와 같이 연달아 작성합니다. - 단, 리포지토리가 Private일 경우 작동하지 않을 수 있습니다.
- Repository Template을 사용했을 때, 복사되는 범위는 현재 프로젝트의 디렉토리 및 구조, 브랜치 등까지 입니다. Issue나 Pull request의 Labels, Wiki, Project, Actions 등은 복사되지 않습니다.