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 는 추가 템플릿을 만들어서 쓰는게 좋을 것 같음.

리서치

글을 찾아보자.

어떤게 필요할까?

  • 디렉토리 구조 내가 지정한데로 생성되면 좋겠다.
  • .gitignore 파일 기본으로 들어있으면 좋겠다.
  • cocoapods pod file 이 기본으로 들어있으면 좋겠다.
    • swiftlint / swiftformat 이 기본으로
    • script phase 에 명령어가 추가됐으면 좋겠다.
  • carthage 로 필수 디렉토리들 선택하면 자동으로 세팅되면 좋겠다.
  • 내가 필요한 기본 extensions 들이 바로 들어있으면 좋겠다.
  • 원격 git repository 도 연결해주면 좋겠다.

뭘 할 수 있나?

  • 기존에 만들어진 template을 수정해서 만든다.

  • TemplateInfo.plist 를 수정하자.

  • sort order 선택 가능

  • check box로 on/off 가능

  • 변수명 주입 가능

어떻게 할까?

  1. 템플릿을 만든다.
  • 자유도는 좀 줄지만, xcode 에서 바로 로드 가능. (아마도 유지보수 없어도 될 듯, 템플릿대로만 한다면)
  1. Shell을 만든다.
  • 좀 더 자유도가 있을 듯

만들어보자.

미리 준비할 파일들

  • 기본 Podfile
  • 기본 Cartfile
  • .gitignore 파일
  • swiftlint 환경설정 파일
  • swiftformat 환경설정 파일
  • 기본 extensions 파일

순서

  1. Project 이름 (디렉토리 이름) 입력받기
  2. Organization name 입력 받기
  3. Organization Identifier 입력 받기
  4. 생성
  5. Pod init 하기
  6. Pod file update 하기 (미리 세팅한 것들)
  7. Pod install
  8. Cartfile 복사
  9. Carthage update
  10. .gitignore / swiftlint 환경 설정 파일 / swiftformat 환경 설정 파일 복사
  11. info 파일 업데이트 하기 (swiftlint/swiftformat script phase 업데이트)
  12. 프로젝트에 extensions 파일 복사 및 그룹 생성하기
  13. 끝.

// 이게 가능할까나...

https://github.com/xmartlabs/Swift-Project-Template

코드를 보니, 샘플 프로젝트 만들어서 그냥 rename 만 해서 사용하는 것으로 보임. 간단하다.

샘플 만들어서 해보자.