Xcode project template 만들기 - kirseia/study GitHub Wiki
-
xcode 프로젝트를 매번 만들때마다 기본 생성되는 프로젝트를 내 스타일로 바꾸는건 간단하지만 매우 귀찮다.
-
대표적으로 나는 ...
- xcode empty project 를 생성한다.
- storyboard 를 sceans 라는 그룹을 만들어 옮긴다.
- xcassets 같은건 resources 라는 그룹에 옮기는데 test / release를 구분해서 옮긴다.
- 디렉토리 배치 등등 변경
- 필수 extensions들 복사
- 필수(?) carthage 라이브러리 또는 cocoapods 라이브러리 로드
- 원격 git repository 연결
-
을 하는데 매번 똑같은걸 반복한다.
-
이걸 쉽게 하는게 없을까? 라는게 이 글의 주제
결론부터...
-
원하는 형태의 템플릿 프로젝트를 만든다.
-
'project name'을 특이하게 짓는다. (유니크하게)
-
'bundle identifier' 도 특이하게 이름을 짓는다. (유니크하게)
-
원하는 세팅을 끝낸다. (pod 이든 carthage든 환경설정이든)
-
shell script 같은걸 만든다 - (유니크하게 지은 이름을 입력 받은 텍스트로 교체해서 복사하는 스크립트)
-
script를 실행하고, 'project name', 'bundle identifier'를 입력받으면 스크립트는 'project name'으로 복사하고 이름을 전부 변경한다.
-
끝.
-
https://github.com/kirseia/study/tree/master/SwiftTemplate 이렇게 하면 될 듯
하나 만들어서 사용해본 후기
- App Template을 만들어놓고, Framework 을 만드니까 안맞는 면이 좀 있었음.
- 결국 Framework 는 처음부터 다시 세팅해서 사용했음.
- Framework 는 추가 템플릿을 만들어서 쓰는게 좋을 것 같음.
리서치
글을 찾아보자.
- https://useyourloaf.com/blog/creating-custom-xcode-project-templates/
- 가장 잘 설명된 문서. 이거하나면 될 듯.
- https://github.com/xmartlabs/Swift-Project-Template
- 명령어로 프로젝트 생성해주는 것 (현재 에러남. 2019.4.3)
- https://stackoverflow.com/questions/50213315/customize-xcode-file-template-with-checkbox
- https://medium.com/@dima.cheverda/xcode-9-templates-596e2ed85609
- https://github.com/pgorzelany/iOS-project-template
어떤게 필요할까?
- 디렉토리 구조 내가 지정한데로 생성되면 좋겠다.
- .gitignore 파일 기본으로 들어있으면 좋겠다.
- cocoapods pod file 이 기본으로 들어있으면 좋겠다.
- swiftlint / swiftformat 이 기본으로
- script phase 에 명령어가 추가됐으면 좋겠다.
- carthage 로 필수 디렉토리들 선택하면 자동으로 세팅되면 좋겠다.
- 내가 필요한 기본 extensions 들이 바로 들어있으면 좋겠다.
- 원격 git repository 도 연결해주면 좋겠다.
뭘 할 수 있나?
-
기존에 만들어진 template을 수정해서 만든다.
-
TemplateInfo.plist 를 수정하자.
-
sort order 선택 가능
-
check box로 on/off 가능
-
변수명 주입 가능
어떻게 할까?
- 템플릿을 만든다.
- 자유도는 좀 줄지만, xcode 에서 바로 로드 가능. (아마도 유지보수 없어도 될 듯, 템플릿대로만 한다면)
- Shell을 만든다.
- 좀 더 자유도가 있을 듯
만들어보자.
미리 준비할 파일들
- 기본 Podfile
- 기본 Cartfile
- .gitignore 파일
- swiftlint 환경설정 파일
- swiftformat 환경설정 파일
- 기본 extensions 파일
순서
- Project 이름 (디렉토리 이름) 입력받기
- Organization name 입력 받기
- Organization Identifier 입력 받기
- 생성
- Pod init 하기
- Pod file update 하기 (미리 세팅한 것들)
- Pod install
- Cartfile 복사
- Carthage update
- .gitignore / swiftlint 환경 설정 파일 / swiftformat 환경 설정 파일 복사
- info 파일 업데이트 하기 (swiftlint/swiftformat script phase 업데이트)
- 프로젝트에 extensions 파일 복사 및 그룹 생성하기
- 끝.
// 이게 가능할까나...
코드를 보니, 샘플 프로젝트 만들어서 그냥 rename 만 해서 사용하는 것으로 보임. 간단하다.
샘플 만들어서 해보자.