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
'초보 iOS 개발자의 일상 > 개발 업무' 카테고리의 다른 글
프로젝트 별 spm 설정 초기화 (설정값 주입? or 환경변수 설정?) (0) | 2024.07.23 |
---|---|
Unlisted app distribution 등록되지 않은 앱 배포 (+ Enterprise 배포를 하지 못한 이유) (0) | 2024.07.22 |
[긴급🚨] Privacy Manifest 추가하기 (0) | 2024.04.03 |
[iOS] 네트워크 속도 제어 (iPhone & Mac) (0) | 2024.01.25 |
[Swift] bullet string 적용하기 (0) | 2023.12.26 |