요즘 이것저것 해보고 싶은게 많다.
그래서 깃허브에 라이브러리를 올려보자 한다. 내용자체는 간단한 내용이지만,
언젠간 쌓일 ⭐️ 을 위해...
시간 관련 함수를 정리한 라이브러리에, Cocoapods 을 달아보고자 한다.
사실 SPM 은 Swift Package 로 생성한것에 GitHub 에만 올리면 가능한 이야기라, 따로 설명은 없다.
하지만 아래의 블로그를 보면 참고 할수 있다.
https://moonggi-dev-story.tistory.com/86
1. 라이브러리 생성
1-1. 초기 프로젝트가 생성 되어있지 않은 상태에서 생성 하고자 하는 디렉토리에 이동해 (Terminal) 다음 명령어를 쳐줍니다.
pod lib create (라이브러리 명)
1-2. 여러가지 설문에 응답합니다.
설문은 다음과 같습니다.
1. 어떤 플랫폼을 사용할것인가?
2. 어떤 언어를 사용할것인가?
3. 데모앱 사용할것인가?
4. 테스트는 어떤걸로 할것인가?
5. 뷰 기반으로 테스트 할것인가?
* 해당 작업을 하면, 신규 프로젝트가 생성 되기에 기존에 만들어진 프로젝트 같은경우 2번과 같은 행위를 거쳐야 합니다. (기존 프로젝트에 pod 내용 옮기기)
* 필자 같은경우 최초 SPM 프로젝트를 생성하고 GitHub 에 올린후 진행 했습니다.
* 만약 신규 프로젝트 생성후 바로 진행 하실려면 3번부터 보시면 됩니다.
2. 기존 프로젝트에 (pod 내용 옮기기)
설치한 프로젝트에서 해당 파일만 기존 프로젝트로 옮깁니다.
* 옮길 프로젝트명과 새로 만든 pod 프로젝트 명이 다를경우 상당히 골치가 아플수 있습니다.
필자 같은경우, 다른 디렉토리에 동일한 프로젝트 명으로 만들고 옮겼습니다.
- .podspec – SPM의 Package.swift와 역할이 같으며, CocoaPods 디펜던시에 대한 핵심 사항을 설정하는 파일입니다.
- Example – 해당 라이브러리에 대한 예제 앱을 추가할수 있습니다.
- LICENSE – 라이센스 파일
- README.md – 리드미 파일
3. 배포하기
2번을 진행하지 않고, 3번을 진행할경우 ReplaceMe 파일을 라이브러리명.swift 로 변경 해주세요.
해당 파일이 라이브러리 소스를 담당하는 친구입니다.
3-1. spec 파일 수정하기
2번 사항에서 옮긴 파일 (podspec) 파일을 연후 다음 내용을 수정합니다. 2번을 진행 안하셔도 한번 둘러보시는걸 추천 합니다.
s.homepage = 'https://github.com/MoongGi/TimeKit-pod-test'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '김문기' => 'hihibibi00@naver.com' }
s.source = { :git => 'https://github.com/MoongGi/TimeKit-pod-test.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '10.0'
s.source_files = 'Sources/TimeKit/Classes/**/*'
필자는 homepage, source, author, source_file 수정 했습니다. 특히 s.source_file 중요하니 경로 잘 확인 하세요.
3-2. Example 에서 테스트 해보기
디렉토리 상에서 Example 로 이동하고 pod install 을 진행 합니다.
그리고, Git에 Push 처리 합니다.
3-3. 태그 생성
git 상에 상단 태그를 클릭합니다.
버전 내용을 입력후 (v 와 같은 문자열이 들어가면 안됩니다.) 생성진행합니다.
3-4. 이메일 인증
터미널에 다음 명령어를 입력 합니다 (이메일, 이름)
pod trunk register hihibibi00@naver.com kimmoongi
[!] Please verify the session by clicking the link in the verification email that has been sent to hihibibi00@naver.com
이메일을 받은후 해당 링크를 클릭합니다.
링크를 실행후 pod trunk push 입력하면 가능할꺼같지만, 그전에 검수를 진행 해야합니다.
3-5. 검수
터미널상에 아래 명령어를 검색하면 알아서, 유효성 무결성 검사를 진행합니다.
pod lib lint --no-clean
이렇게 걸립니다.. 지긋지긋
해당 내용을 보아하니, source_files 에 문제가 있는것을 확인하여
3-1 에서 진행한 spec 의 내용을 변경 했습니다. (경로 중요!)
s.source_files = 'Sources/TimeKit/**/*'
변경후 개같이 패스 완료.
3-6. 배포
검수 완료시 아래 명령어를 입력해 최종 배포를 진행합니다.
pod trunk push TimeKit.podspec --allow-warnings
아래 메세지 같은경우, 라이브러리 버전과 태그 버전이 알맞지 않아 발생한 문제 입니다.
버전 수정하고 재 배포 하면 끝입니다!
마치며
끝인데 왜? 마무리 이미지는 없냐구요?
왜냐면 최종 배포할때 동일한 이름을 가지고 있는 라이브러리가 있어, 최종 배포에는 실패 했습니다.
최초로 실패한 내용을 올리는 포스팅이지 않나 싶습니다. (SPM 에 만족중)
하지만, 해당 내용만 겹치지 않았으면 충분히 배포가 가능 했을꺼같아 포스팅 마저 진행합니다.
실제 필자가 만들고 싶은, 라이브러리 생성하여 배포가 완료했을때 다시 돌아오겠습니다.
꼭 해당 프로젝트를 만들기전에 https://cocoapods.org/ 에 검색해서 프로젝트가 있는지 없는지 확인하세요!
-- 추가 --
2023.09.03 라이브러리 생성 성공
이번에는 검색해서 프로젝트가 있는지를 확인 했구 새로 진행하고 싶은 라이브러리를 만들고자 합니다.
첫번째 버전 릴리즈 할때 글 올리겠습니다.
긴글 읽어주셔서 감사합니다.
참고
https://fomaios.tistory.com/505
'IOS' 카테고리의 다른 글
Widget - 위젯을 타입별로 꾸며보자 (0) | 2024.03.04 |
---|---|
Widget - 신규 프로젝트에 위젯을 달아보자 (0) | 2024.03.02 |
Swift - Google Login (0) | 2023.06.24 |
SwiftUI - 프로젝트에 TCA 를 적용 해보자 (1) (0) | 2023.03.18 |
SwiftUI - 이미지 줌 기능을 달아보자 (0) | 2023.02.26 |