Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Creating Swift Packages #22

Open
kimscastle opened this issue Jun 11, 2023 · 0 comments
Open

Creating Swift Packages #22

kimscastle opened this issue Jun 11, 2023 · 0 comments
Assignees
Labels
SPM WWDC19 WWDC 19년영상 의성

Comments

@kimscastle
Copy link
Contributor

kimscastle commented Jun 11, 2023

Local Package 만들기

  • 거두절미하고 Local Package만드는 방법
스크린샷 2023-06-11 오후 9 17 20

예시 - 일하는곳 근처에있는 카페 몇 곳의 점심메뉴를 보여주는 앱을 사용

  • FoodNStuff라는 패키지를 생성하면 기본 폴더가 제공된다
스크린샷 2023-06-11 오후 9 48 58
  • 기존에 사용하던 모델 파일을 패키지 폴더에 드래그해서 넣으면된다
스크린샷 2023-06-11 오후 9 49 40
  • 그다음에 앱과 패키지를 연결시켜야하는데 이때 매니패스트파일을 살펴봐야한다(매니패스트는 후반부에 설명)
스크린샷 2023-06-11 오후 9 51 30
  • 우선 프로젝트 파일에 들어가서 target을 열고 frameworks, libraries, and embedded content를 선택한다
스크린샷 2023-06-11 오후 9 53 03
  • 그리고 만들어놨던 패키지를 선택해준다
스크린샷 2023-06-11 오후 9 53 14
  • 그리고 해당 프로젝트에서 import 패키지를 해준다
스크린샷 2023-06-11 오후 9 54 31

Publishing Packages

버전관리란?

  • Swift Package는 Sementic Versioning을 준수한다(지속적인 변동 없이 종속성의 버그 수정으로 이점을 얻을 수 있다)

Major Version

  • 기존 클라이언트를 업데이트 해야하는 API의 주요 변경 사항을 나타낸다
  • 예를들어 기존유형의 이름을 바꾸거나 메서드를 제거하거나 메서드의 서명을 변경하는것
  • 이전 버전과 호환되지 않는 버그수정 또는 기존 API에 대한 주요 동작 변경도 포함될 수 있다
스크린샷 2023-06-11 오후 9 57 15

Minor Version

  • 마이너버전을 업데이트하면 기능 ID가 이전 버전과 호환되는 방식으로 추가된다
  • 새로운 메서드를 추가하거나 새로운 유형을 추가하는 것
스크린샷 2023-06-11 오후 9 59 15

Patch Version

  • 버그를 수정하는 경우
스크린샷 2023-06-11 오후 10 00 32

Major Version Zero(0)

  • 주버전을 0 으로설정하는 것은 초기 개발중에 사용할 수 있는 특별한 경우이다
  • 그렇기때문에 사람들이 패키지를 사용하기 시작하면 1.0릴리즈를 제공해야만한다
스크린샷 2023-06-11 오후 10 01 14

Prerelease Version

  • 한동안 패키지를 유저가 사용하게되면 시험판 버전을 사용해서 최종릴리즈를 만들기전에 api를 테스트하도록 요청할 수 있다
스크린샷 2023-06-11 오후 10 02 33
  • 이런식으로 Version Rules에 name을 추가하면된다 여기서는 beta.1을 사용했다
스크린샷 2023-06-11 오후 10 03 36
  1. 패키지를 드래그해서 독립된 폴더로 만든다
스크린샷 2023-06-11 오후 10 05 34
  1. package.swift파일을 더블클릭한다
스크린샷 2023-06-11 오후 10 06 06
  1. 레포지토리를 생성한다
스크린샷 2023-06-11 오후 10 07 30
  1. 로컬에 레포지토리가 생성되고 자동으로 현재상태가 커밋된다
스크린샷 2023-06-11 오후 10 07 47
  1. xcode에서 원격저장소를 만든다 그러면 github에 레포지토리를 만들고 현재상태를 푸쉬한다
스크린샷 2023-06-11 오후 10 08 44
  1. 버전정보를 올리기위해 Tag master옵션을 선택한다, tag를 만들어도 로컬에 생성되므로 github에 푸쉬해야한다
스크린샷 2023-06-11 오후 10 10 06
  1. tag를 포함해서 push한다
스크린샷 2023-06-11 오후 10 11 03
  1. 레포지토리에서 url을 복사한다음에 새로운 package dependency를 설정해준다
스크린샷 2023-06-11 오후 10 13 12
  1. 로컬 package를 삭제해준다
스크린샷 2023-06-11 오후 10 13 44

Package Manifest API

  • 전체 패키지는 단일 패키지의 초기화문을 사용해서 구성된다
스크린샷 2023-06-11 오후 10 16 13

Package Dependencies

  • 패키지 종석성은 url과 version을 설정해줘야한다
스크린샷 2023-06-11 오후 10 20 19
  • uptoNextMajor는 버전 요구 사항을 선언하는 데 권장되는 방법이다
  • uptoNextMinor는 수행한 변경 사항에 대해 보수적으로 적용하려는 경우에 유용하다
  • 정확한 버전 요구 사항이 있는데 이를 통해 특정 버전에 대한 종속성을 고정할 수 있다(패키지 제작에서 더 많은 충돌이 발생할 수 있으므로 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다)
스크린샷 2023-06-11 오후 10 21 28

Swift Package의 독립성

  • Swift Package는 플랫폼에 독립적이고 패키지가 여러 플랫폼을 지원하고 일부 플랫폼별 코드가 있는 경우 Swift의 조건부 컴파일 기능을 사용할 수 있다
스크린샷 2023-06-11 오후 10 24 56

Package 편집

로컬에 있던 package 폴더를 드래그해서 가져온다, 그리고 편집한다
스크린샷 2023-06-11 오후 10 26 20

@kimscastle kimscastle self-assigned this Jun 11, 2023
@kimscastle kimscastle added Swift 주제 의성 WWDC19 WWDC 19년영상 labels Jun 11, 2023
@ffalswo2 ffalswo2 added SPM and removed Swift 주제 labels Jun 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
SPM WWDC19 WWDC 19년영상 의성
Projects
None yet
Development

No branches or pull requests

2 participants