Swift Package Manager(SPM) 써보기 #1

기다리던 Xcode 11 GM이 나왔다.

과감하게(?) 개발 중이던 프로젝트를 열고 SPM을 지원하는 외부 library를 리스팅 후 Podfile 에서 삭제하고 이를 SPM으로 관리할 수 있게 설정을 해보았다…

과정은 아래와 같다.

SPM을 이용해 외부 라이브러리 등록하기

SPM을 이용하여 외부 프레임워크를 등록하기 위해서는 Project -> Swift Package로 이동하여 +버튼 선택 혹은 상단 메뉴 File -> Swift Packages -> Add Package Dependency… 를 선택한다.

Respository URL을 입력하세요~

현재 SPM을 지원하는 인기(필자가 주로 사용하는 ㅋ) 외부 라이브러리는 얼추 아래와 같다.

  • RxSwift, RxCocoa, RxDataSources
  • Alamofire
  • SDWebImage
  • SnapKit

위에 나열된 것 외의 오픈소스 library가 SPM을 지원하는지 여부를 확인하기 위해서는 해당 Git Repository로 가서 확인하면 되겠다. (CocoaPods으로 관리하던 라이브러리가 대부분일텐데 https://cocoapods.org 로 이동 후 원하는 라이브러리를 검색하고 상세 보기에서 오른쪽 하단에 보면 GitHub Repo 링크를 통해 이동하면 편리하다.)

Cocoapods.org에서 Alamofire 검색 후 상세 화면.
GitHub Repo를 찾아보시오.
이 주소를 입력하면 된다.

버전 관리 룰 지정

Repository URL 을 입력하고 하단 Next 버튼을 누르면 해당 Repository를 검색한 후 아래와 같이 버전 관리 rules를 어떻게 할 것인지 묻는 창으로 바뀐다.

어떻게 관리할래? 라고 묻는 창

버전 관리룰은 아래와 같으며, 편한 방법으로 지정하면 된다. 이 룰은 언제든지 변경 가능하다.

  • 버전 범위 지정
    • Up to Next Major – Major 버전으로 지정 (i.e. 4.9.0 이상 5.0.0 미만)
    • Up to Next Minor – Minor 버전으로 지정 (i.e. 4.9.0 이상 4.10.0 미만)
    • Range – 직접 지정하기 (i.e. 4.9.0 이상 4.11.0 미만)
    • Exact – 특정 버전만으로 특정하기 (i.e. 4.9.0)
  • Branch
    • git branch 이름으로 지정 (i.e. master)
  • Commit
    • 특정 git commit으로 지정 (i.e. bf92c493432c490)
Library 가져오는 중…

Library 선택하기

일반적으로는 하나의 repository에 하나의 library가 존재하지만 RxSwift 와 같이 여러 개의 library가 존재하는 케이스도 있다. 여러 개의 library가 존재할 경우 체크박스를 통해 가져올 라이브러리를 선택하도록 한다.

다수의 library가 있는 경우.
RxSwift의 예

준비완료

등록완료 된 화면

이제 환경은 구성되었다.

잘 구성되었는지 확인을 위해 아래처럼 해당 모듈을 import 해보자.

RxSwift를 import하고 DisposeBag instance를 만들어보았다.

빌드가 성공적으로 되었다면 이제 잘 쓰면 된다.

하지만 필자가 현재 관리 중인 프로젝트의 경우 빌드가 실패하였는데 이는 다른 글로 이어가겠다.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.