[iOS] Xcode 템플릿 적용하기

Charlie·2022년 10월 17일
0
post-custom-banner

프로젝트를 할 때 템플릿을 미리 만들어 놓으면 파일을 생성하고 기본적으로 작성해야 하는 코드들을 일일이 작성할 필요가 없어진다.

기존 템플릿 디렉토리

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/

위 디렉토리로 이동하면 기존에 있던 템플릿들을 확인할 수 있다.

템플릿 생성

커스텀 템플릿은 기존 템플릿이 위치한 디렉토리와는 다르다.

cd ~/Library/Developer/Xcode
mkdir -p ~/Library/Developer/Xcode/Templates/File\ Templates

먼저 Xcode 디렉토리로 이동 후 Templates/File Templtates 디렉토리를 생성해준 뒤

mkdir -p ~/Library/Developer/Xcode/Templates/File\ Templates/MVVM.xctemplate

템플릿을 생성해준다.

템플릿에는 기본적으로 아래 4개의 파일이 필요한데, 기존에 있던 것들을 복사하여 수정하면 간편하다.

  • TemplateIcon-1016.png
  • TemplateIcon-1016@2x.png
  • TemplateInfo.plist
  • FILEBASENAME.swift

템플릿 작성

현 프로젝트에서는 생성하는 이름을 가지고 디렉토리를 만든 후 그 안에 ViewController와 ViewModel을 생성하기 위해서 아래 사진과 같이 폴더 및 파일을 만들어줬다.

ViewController

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//  Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved.
//

import Combine
import UIKit

import CancelBag
import SnapKit

final class ___VARIABLE_sceneName___ViewController: BaseViewController {
    var viewModel: ___VARIABLE_sceneName___ViewModel?

    public override func viewDidLoad() {
        super.viewDidLoad()

        setUI()
        setConstraints()
        bind()
    }
}

// MARK: - UI
extension ___VARIABLE_sceneName___ViewController {
    /// 화면에 그려질 View들을 추가합니다.
    private func setUI() {
        
    }
    
    /// 화면에 그려진 View들의 Constraints를 SnapKit을 사용하여 설정합니다.
    private func setConstraints() {
        
    }
}

// MARK: - Bind
extension ___VARIABLE_sceneName___ViewController {
    /// View Model과 bind 합니다.
    private func bind() {
        // input
        
        // output
    }
}

ViewModel

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//  Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved.
//

import Combine

final class ___VARIABLE_sceneName___ViewModel: BaseViewModel {

}

Info.plist

  • Kind : 템플릿 종류
  • Description : 설명
  • Summary : 요약
  • SortOrder : Template 순서
  • BuildableType : 템플릿으로 파일 생성 시 Targets 설정 (없으면 프로젝트가 디폴트)
  • DefaultCompletionName : 템플릿으로 파일 생성 시 미리 입력되어 있는 이름
  • Options : 템플릿으로 파일 생성 시 사용자에게 입력을 받아 파일 생성

템플릿 적용

템플릿을 적용하기 위해서는
~/Library/Developer/Xcode/Templates/File\ Templates/ 디렉토리에 템플릿이 위치해야한다.

깃을 통해 협업을 진행할 때에는 프로젝트파일 안에 템플릿을 두고 위 경로로 템플릿을 복사하는 shell script 파일을 추가하여 팀원들이 사용할 수 있도록 하면 된다.

먼저

touch set_template.sh

set_template.sh 파일을 생성해주고,

cp -r MVVM.xctemplate ~/Library/Developer/Xcode/Templates/File\ Templates/

파일 내부에 위 명령어를 작성하여 복사를 할 수 있게 한다.

그리고

chmod 777 set_template.sh

파일을 모든 사용자가 실행할 수 있도록 위 명령어를 입력하면 세팅은 끝난다.

이후 팀원들이 프로젝트를 받고

./set_template.sh

명령어를 입력하여 템플릿을 사용할 수 있다.

Reference

[iOS - swift] Xcode 코드 템플릿 (File Template, Custom File Template)

profile
Hello
post-custom-banner

0개의 댓글