...
본문 바로가기

iOS

SwiftGen 설치하는 방법

 

개발자분이 추천해주셔서 알게됐다. 

 

 

https://github.com/SwiftGen/SwiftGen#installation

 

GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all S

The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! - GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards...

github.com

 

 

SwiftGen은 프로젝트에 필요한 리소스들을 자동적으로 코드로 생성해주는 아주 편리한 녀석이다. 

일반적으로 리소스 ( Asset파일이나, 폰트 등 ) 들을 불러와서 코드로 작성할 때, 이름을 정확하게 입력해야 문제없이 불러올 수 있는데,

간혹 실수로 오타를 내거나 하면 불러오질 못한다. 곧바로 오타라는 것을 캐치하면 좋겠지만 때로는 다른 문제라고 생각하여 시간을 허비하는 경우도 발생한다.

그러므로, SwiftGen은 이러한 오타의 위험을 줄여줌으로써 좀 더 개발에 집중할 수 있도록 도와준다. 

 

 


설치하기 

굉장히 다양한 방법으로 설치할 수 있다.

 

HomeBrew로 설치한다면 이제 자신의 맥에서는 어떤 프로젝트든 쉽게 SwiftGen을 사용할 수 있다. 

 

 


코드 생성하기 

요약 

  • 1. 특정 리소스들을 코드로 생성하기 위한 template 같은게 필요하다. - swiftgen.yml 파일 
  • 2. swiftgen.yml 파일이 있다면 swiftgen config run 을 실행하여 코드들을 생성해낸다. 

 

 

HomeBrew로 설치했다면, 

이제 특정 리소스들을 코드로 생성하기 위한 파일이 필요하다. 

swiftgen.yml 파일이 필요한데, 

이는 터미널로도 해당 프로젝트 최상단에서 swiftgen config init 이라고 입력하여 파일을 생성할 수 있고, 

또는 Build Phase - Run Script에서 다음과 같이 작성하여 빌드하면 파일이 생성되는 걸 확인할 수 있다. 

 

그러면 최상단에 swiftgen.yml 파일이 생성되고, 다 주석처리 되어있다. 

 

 

그럼 이제 코드로 생성하고자 하는 리소스들을 인풋 경로와, 아웃풋 경로를 적절히 작성하면 된다.

특정 리소스들에 대한 형식은 깃헙 - SwiftGen 하단에 잘 나타나있다. 

우선 xcasset과  font를 경로를 지정했다. 

 

 

만약 xcasset를 각각 따로 생성하고 싶다면 - inputs 로 열어주면 된다.

 

 

 

 

그리고 다음과 같이 코드를 생성해는 명령어 swiftgen config run 를 입력하면 인풋 경로에 맞는 리소스들을 아웃풋 경로에 생성해준다. 

마찬가지로 명령어는 터미널에서도 입력해도 되고,

Run script에 작성해도 된다.  ( 그럼 이제 매번 빌드할 때 마다 아래 명령어가 실행되고,  swiftgem.yml 파일을 해석해서 자동적으로 코드 파일을 생성 또는 업데이트 해준다 ) 

 

그럼 이제 지정한 경로에 파일이 생성된다. 

 

ImageAssets.swift파일은 아래와 같이 생성된다. 

( 컬러는 되도록이면 colors template를 사용하지 말고 Assets에서 넣어서 정의하는 걸 추천한다고 한다 ) 

 

 

그럼 해당 파일을 프로젝트에 넣어주면 된다! 

 

그러면 코드에서는 다음과 같이 불러와서 사용할 수 있다

 

 

 


추가적인 파라미터 

 

template내에서도 파라미터를 override하여 변경할 수 있는 파라미터가 여러개 있다.

 

아래에서 특정 template를 선택해서 파라미터들을 확인할 수 있다. 

https://github.com/SwiftGen/SwiftGen/tree/stable/Documentation/templates

 

GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all S

The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! - GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards...

github.com

 

 

xcassets의 파라미터는  아래에서 확인할 수 있다.

  • enum 타입의 이름을 변경하거나, 
  • enum 타입내의 image or color의 타입이름을 변경할 수도 있다. 
  • public or internal 정의 ( default로 internal ) 

https://github.com/SwiftGen/SwiftGen/blob/stable/Documentation/templates/xcassets/swift5.md

 

GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all S

The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! - GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards...

github.com