버그 잡이

Swift Pakcage Manager로 모듈화 하기 (기타 삽질편) 본문

IOS

Swift Pakcage Manager로 모듈화 하기 (기타 삽질편)

버그잡이 2024. 7. 6. 17:42

지난번 포스팅: https://jinsangjin.tistory.com/186

 

Swift Pakcage Manager로 프로젝트 기능 모듈화 하기

왜 SPM으로 모듈화를 하는가?- 모듈화를 해보고 싶었습니다.- Tuist를 활용해서 하는 방법도 있었지만 Tuist까지 같이 도입하기에는 시간이 부족했고- Tuist를 도입하기 전에 SPM으로 간단하게(?) 레거

jinsangjin.tistory.com

 

지난번 포스팅에서 Swift Package Manager로 기능을 모듈화 하고 데모 앱까지 만드는 방법을 알아봤습니다.

오늘은 모듈화 과정에서 삽질했던 부분을 모아서 적어보겠습니다.

 

 

모듈을 어떻게 import 할것인가?

모듈들은 프로젝트 루트 -> Modules 폴더 안에 위치했습니다.

처음에는 모듈을 project -> add package 로 불러왔습니다.

이렇게 하니까 프로젝트에서 모듈 파일을 검색할 수 없는 불편함이 있었습니다.

 

그래서 다른 방법을 찾아봤고

Modules 폴더를 Xcode에서 프로젝트에 드래그 앤 드롭으로 끌어와서 추가했습니다.

이렇게 추가하니까 통합 검색도 잘 되고 한 프로젝트 안에서 관리할 수 있게 되었습니다.

 

 

Workspace 설정

 

모듈들은 위에서 처럼 프로젝트로 끌고 왔는데요.

 

"DemoProject들은 어떻게 해야 한 Xcode 화면에서 관리할 수 있을까요?"

 

Workspace를 활용하면 여러 프로젝트를 하나의 작업 공간에서 다룰 수 있습니다.

cocoapod을 쓰신분들은 workspace 파일이 익숙하실텐데요.

바로 그 파일이 맞습니다. 여러 프로젝트를 한 파일에서 작업할 수 있게 도와주는 일종의 작업 단위(?) 입니다.

 

사용 방법은 간단합니다.

workspace 파일을 만들고 기존 프로젝트와 데모 프로젝트를 드래그앤드랍으로 추가해주시면 됩니다.

 

 

커스텀 폰트 쓰는 법

만약 커스텀 폰드가 Resource 모듈에 있고

이를 다른 프로젝트에서 쓰고 싶다면 폰트를 등록해주는 작업이 필요합니다.

구체적인 방법은 아래 글에 잘 정리되어있어서 참고바랍니다.

https://eunjin3786.tistory.com/569

 

[iOS] Swift Package 에서 커스텀 폰트 사용하기

[ 니즈 ] 이렇게 된 구성에서 1. SharedUI 안에 커스텀 폰트를 넣고 프리뷰로 커스텀 폰트를 보고 싶음. 2. SharedUI 를 의존하는 Feature1 타겟의 프리뷰로 커스텀 폰트를 보고 싶음. 3. 앱의 UIKit 기반 코

eunjin3786.tistory.com

 

 

 

Asset 쓰는 법

Package에도 Asset catelog 를 만들고 사용할 수 있습니다.

이를 사용할대 주의점이 있습니다.

리소스를 올바르게 참조하기 위해서는 어떤 번들을 볼건지 명시적으로 지정해줘야 합니다.

기본은 Bundle.main으로 되어있기 때문에 패키지의 asset catelog를 찾을 수 없습니다.

 

bundle을 .module로 설정해줘야 이미지를 불러올 수 있습니다.

// SwiftUI
Image("imageName", bundle: Bundle.module)

// UIKit
UIImage(named: "imageName", in: Bundle.module, compatibleWith: nil)

 

 

 

 

lottie.json 쓰는 법

 

lottie json 파일을 쓰기 위해서는 파일을 추가해주고 해당 리소스를 인식할 수 있게 package 파일에도 명시해줘야합니다.

resources: [
    .copy("data/config.json") //This could also be .process
])

 

참고: https://stackoverflow.com/questions/73472764/problem-loading-json-resource-in-swift-package




이렇게 SPM으로 모듈화 하면서 제가 겪은 삽질 내용들을 정리해봤습니다.
앞으로 더 다듬어 가면서 공유할 내용이 있으면 추가 정리해볼게요 :)

 

반응형
Comments