Programming/iOS

SwiftGen 라이브러리 간단 설명 & 사용법

devssun 2021. 7. 12. 22:35
728x90
반응형

SwiftGen

SwiftGen/SwiftGen 라이브러리 링크

SwiftGen 간단 설명

SwiftGen 라이브러리는 프로젝트의 리소스를 자동으로 Swift 코드로 생성해주는 도구이다. (ex. 이미지, 다국어 문구, 색상 등의 리소스, 파일 확장자도 다양하게 지원함)

이 라이브러리를 사용하면 리소스를 편하게 사용할 수 있고 리소스의 변경이 일어났을 때 (없는 리소스를 참조한다던가) 에러를 빠르게 찾을 수 있다.
Xcode에서 이미지나 색상 등을 사용하려면 이름을 string 으로 사용하는데 오타가 나도 에러가 나지않아 틀린 것을 찾기 어렵다. 그런데 SwiftGen으로 생성된 코드로 리소스를 사용하면 위와 같은 상황을 방지할 수 있다.

설치법

SwiftGen의 설치법은 여러가지가 있다.

  • ZIP, Cocoapods, Homebrew, Mint 등

타 라이브러리와 다르게 SwiftGen은 커맨드라인으로 실행할 수 있기 때문에 굳이 Xcode 프로젝트에 설치할 필요까진 없어 나는 Homebrew를 이용해 시스템 전역에 설치했다.

사용법

SwiftGen 라이브러리 사용법은 그닥 어렵지 않다. 아래와 같은 형식에서 본인 필요에 맞게 수정하면 된다. 예제는 여기서 확인

# xcassets를 Swift code로 변환하는 코드

xcassets:
   inputs:
     - Resources/Assets.xcassets
   outputs:
     - templateName: swift5
       params:
         forceProvidesNamespaces: true  # option
       output: Generated/Assets+Generated.swift
  1. command line

    • 터미널에서 프로젝트로 이동해 swiftgen config init 명령어를 입력한다. 그럼 swiftgen.yml 파일이 생성된다. 파일을 열면 보편적으로 사용하는 코드들이 들어있다.
    • 자기가 원하는 코드의 주석을 풀고 수정 후 저장한다.
    • 터미널에서 swiftgen 을 입력하면 output에 파일이 생성된다
    • 해당 파일은 Xcode에 바로 추가되는 것이 아니므로 직접 프로젝트에 추가한다.
  2. Xcode Run Script

    • SwiftGen 블로그 예제를 찾아보면 script를 이용해서 했다고 하는데 막상 공식문서를 보면 script를 사용하려면 어떻게 해야하는지 안나온다. Xcode-Integration 공식문서의 이 파일에 별도로 설명되어있다.

      • 프로젝트 내비게이터에서 프로젝트를 선택한다. (Select the project in the Project Navigator on the left of your Xcode window)

      • 리스트에서 앱 타겟을 선택한다. (Select your App Target in the list)

      • Build Phases 탭으로 이동한다. (Go in the "Build Phases" tab)

      • 왼쪽 구석의 + 버튼을 누르고 New Run Script Phase 메뉴를 선택한다. (Click on the "+" button on the upper left corner and choose "New Run Script Phase")

    • 1번에서 yml을 만들었다면 swiftgen config lint 명령어로 script에 넣을 수 있는 shell script를 얻을 수 있다.

        # shell script (xcassets to swift code)
      
        swiftgen xcassets --templateName swift5 --param forceProvidesNamespaces --output Generated/Assets+Generated.swift Assets.xcassets
    • Build하면 output에 파일이 생성된 것을 확인할 수 있다. 직접 프로젝트에 추가한다.

    • run script를 사용하면 빌드때마다 해당 스크립트가 동작하여 파일을 최신화할 수 있다.

      • 리소스가 자주 바뀌면 script로 하는 것도 좋을 거 같든데 command line으로만 해도 크게 불편하진않은듯하다
반응형