Swift Package Manager
Swift Package Manager (이하 SPM) 에서 번들 리소스 포함이 가능하도록 변경되어서 기존에 가지고 있던 오픈소스에 SPM을 넣어보았고, 해당 내용을 공유하고자 한다.
(XCode 12 사용)
일단 할일은 Package.swift 를 소스 저장소에 위치시키기만 하면 된다.
이 Package.swift 파일에 필요항목들을 정의만 하면 끝~
https://docs.swift.org/package-manager/PackageDescription/index.html
api 명세는 여기서 확인할수 있다.
시작 !
일단 Package.Swift 를 위와 같이 단순하게 작성하고 올리고 파인더에서 Package.swift 파일을 실행하면 위와 Swift Package 프로젝트로 열리게 된다.
// swift-tools-veresion:5.3
주석이지만 이 부분은 SPM에서 해석하는 라인이며 번들 리소스를 포함시키기 위해서는 5 이상이 필요하다.
이제 api 문서를 보면서 필요한 것들을 넣어주면 된다.
최종적으로 만들어진 내용이다.
이 오픈소스는 9.1 이상이 필요했기 때문에
platforms 에 .iOS(v10)으로 정의되어있다. ( 마이너 버전은 지원하지 않고있음 mac 은 하던데 ... )
product 항목은 라이브러리의 이름과 타겟을 정의하는 부분이다. 이어지는 targets 와 연관이 있다.
targets 에서 path 를 지정해주면 해당 path 의 파일들이 포함된다. 엄격하게 소스 파일을 넣어주고 싶다면 해당 방법도 있으니 api 문서를 보고 적절히 넣어주면 된다.
exclude 는 위에 포함된 파일중에 제외하고 싶은 path 를 넣어주는 부분이다.
cocoapods , carthage 에서 사용하는 번들과 구분하기 위해 TLBundle.swift 를 제외한 모습니다.
이 부분은 아래 보충 설명.
resources 에 리소스를 넣어줄수있다.
xib 등과 Assets 등 원하는 파일을 넣는다.
Swift Package Manager 에서는 번들을 불러오는 부분이 다르다.
이렇게 Bundle.module 을 사용해야 한다.
이게 (SPM만을 지원하도록 구성하지는 않을것이므로) exclude 에 TLBundle.swift (기존에 Bundle 에서 로드하는 방식 ) 파일을 제외한 이유이다.
Swift Package Manager 의 여러 api 를 설명하거나, 사용하는 방법에 대한 글들은 공식 문서나 , 다른 여러 블로그 글들에서 접할수 있을것 같다.
여기서는 기존에 코코아팟에서 번들을 로드하는 방식과 SPM의 다른 방식에 대한 부분들을 어떻게 호환할 것인지 그 방법중의 하나를 위와 같이 정리해봤다.
마침.