적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

초보 iOS 개발자의 일상/개발 업무

Create and publish Swift Package Manager (SPM 생성하는 법 + Package 구성 추가)

hongssup_ 2024. 7. 18. 17:12
반응형

SPM 을 직접 만들어보자

디자인 모듈을 spm으로 따로 만들고 있는 중이다.. 혹시 또 사용할 일이 있을까봐 정리해둠 ㅎ

 

1.  패키지 생성 Create Package

1) GUI - Xcode 에서 생성하기

Xcode 에서 File > New > Package > Library 생성을 해줄 수 있다.

 

2) CLI - 터미널에서 생성하기

mkdir MyPackage
cd MyPackage
swift package init --type library

 

하면 프로젝트가 생성이 됨

 

2. Publish Package

Github에 새로운 repository 생성해주고

Xcode > Integrate > New Git Repository 로 local 레퍼지토리 생성해준 후 

다음과 같이 원격, 로컬 레퍼지토리를 연결시켜준다.

git remote add origin https://github.com/hongssup/MyPackage.git
git push -u origin master

 

끄읕 !!

 

 

+ 혹시나 위 과정에서 에러나는 분들을 위해.. 

 

** authentication error

Authentication failed for 'https://github.com/hongssup/MyPackage.git/'

이런 authentication fail 에러와 함께 로그인이 안되면

password 에 github 비밀번호가 아닌 personal access token 을 넣어보도록 하자.

 

** git push error

To https://github.com/hongssup/MyPackage.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/hongssup/MyPackage.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

이런 에러와 함께 원격 저장소와 로컬 저장소의 상태가 달라서 push 가 안된다면 

git pull 먼저 하고 다시 push 를 해줘도 되고,

깃헙 레퍼지토리에 commit 되어있는거 그냥 날려도 되면

git push -f origin master 로 force push 해주는 방법도 있다. 

 

 

이렇게 하면 SPM 프로젝트 무사히 생성완료! 😊

 

3. 패키지 구성 추가

1) minimum deployment target 추가해주기

이렇게 만들어진 spm 파일에서 코드를 작성하면

... only available in iOS 13.0 or newer

라는 에러 폭탄을 맞이하게 될 것이다..!!

Package 파일을 열고 다음과 같이 platforms: [ ] 안에 지원하는 OS 와 최소 버전을 명시해줄 수 있다. 

let package = Package(
    name: "MyPackage",
    platforms: [
        .iOS(.v15)
    ],
    products: [
    ...

 

 

 


참고 :

- Package Manager

https://www.swift.org/documentation/package-manager/

- How to Create and Publish Your Own Swift Package Manager (SPM) Library

https://medium.com/@onlyapps/how-to-create-and-publish-your-own-swift-package-manager-spm-library-6704063bcc8c

 

 

 

 

 

728x90
반응형