Top Banner
let swift(16) 스위프트 패키지 매니저 Swift Package Manager 윤성관 lingostar
40

Swift package manager

Jan 06, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Swift package manager

let swift(16)

스위프트�패키지�매니저Swift�Package�Manager

윤성관�lingostar

Page 2: Swift package manager

let swift(16)

윤성관lingostar�Coder’sHigh

Page 3: Swift package manager

Agenda

들어가기�

용어정리�

패키지�매니저�준비�

간단한�프로그램�빌드�

의존성을�포함한�프로그램�빌드�

Xcode�프로젝트�?

Page 4: Swift package manager

let swift(16)

들어가기

Page 5: Swift package manager

–Hair Froce one

“Swift is now open source.”

Page 6: Swift package manager

리눅스에서도�스위프트�사용할�수�있어�

코어�라이브러리는�멋있어졌어�

스위프트�패키지�매니저도�만들었어

Page 7: Swift package manager

WWDC16에서�패키지�매니저

Page 8: Swift package manager

60초~!�

1분~!�

7,000여분�중에�1분�~!

Page 9: Swift package manager

목표�:

WWDC2017의��패키지�매니저�세션�관전�포인트

Page 10: Swift package manager
Page 11: Swift package manager
Page 12: Swift package manager

let swift(16)

용어정리

Page 13: Swift package manager

패키지

소프트웨어,�응용프로그램,�데이터의�‘배포판’�

메타데이터를�포함

Page 14: Swift package manager

패키지�매니저

설치,�업데이트,�설정,�삭제를�자동화�해주는�툴�

소프트웨어의�의존성이나�버전�정보�관리�

ex)�앱�스토어�

ex)�MacPorts,�Homebrew,�CocoaPods�

ex)�Alcatraz�-�Xcode용�플러그인�패키지�매니저

Page 15: Swift package manager

패키지�컨벤션

원활한�배포를�위해�패키지�구조에�대한�규칙�정의�

앱스토어에�앱�올릴�때�패키지�검사�

엔드유저는�패키지�매니저의�사용법만�알면�됨�

앱스토어�사용법만�아시면�됩니다�(카드�비번이랑)�

원활한�배포�-�의존성�문제

Page 16: Swift package manager

let swift(16)

패키지�매니저�준비

Page 17: Swift package manager

Swift�Dev.�Snapshot�설치

https://swift.org/download/#snapshots

Page 18: Swift package manager

Dev�Snapshot�설치

/Library/Developer/Toolchains�

/usr/bin/�

swift-build��

swift-package�

Xcode�버전에�따라�

export�TOOLCHAINS=swift�

export�PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:"${PATH}"

Page 19: Swift package manager

let swift(16)

간단한�프로그램�빌드

Page 20: Swift package manager

매니페스트

메타데이터를�가지고�있는�파일.�화물선의�화물�리스트�

Package.swift�

스위프트�언어로�패키지�매니저의�매니페스트를�정의�

여러분,�스위프트를�배우면�프로젝트�설정도�가능합니다.

Page 21: Swift package manager

프로젝트�폴더�구조

프로젝트�폴더�

Package.swift�

Sources�

소스코드들�

.build/debug/

Page 22: Swift package manager

let swift(16)

Demo�-�간단한�빌드

Page 23: Swift package manager

방금�한�예제는

swift.org�

Getting�Started

Page 24: Swift package manager

let swift(16)

의존성을�포함한�프로그램�빌드

Page 25: Swift package manager

프로젝트�폴더�구조

프로젝트�폴더�

Package.swift�

Sources�

소스코드들�

Packages�

의존성을�가지는�패키지들�

.build/debug/

Page 26: Swift package manager

Dealer

DeckOfPlayingCard

FisherYatesPlayingCard

swift build

Page 27: Swift package manager

let swift(16)

Demo�-�의존성�빌드

Page 28: Swift package manager

Package�클래스

내부에�Dependency�클래스를�정의�

Target에서�다시�Dependency를�enum으로�정의하기�때문

let name:String? let pkgConfig:String? let providers: [SystemPackageProvider]? var targets: [Target] var dependencies: [Dependency] var exclude: [String]

Page 29: Swift package manager

Package�클래스

SystemPackageProvider�는�enum�

case�Brew�,�Apt

let name:String? let pkgConfig:String? let providers: [SystemPackageProvider]? var targets: [Target] var dependencies: [Dependency] var exclude: [String]

Page 30: Swift package manager

Dependency�클래스

let versionRange: Range<Version> let url: String

Package(…,…) -> Dependency

Page 31: Swift package manager

Target�클래스

내부에�Dependency�enum을�정의

let name: String var dependencies: [Dependency]

Page 32: Swift package manager

샘플�매니페스트

Page 33: Swift package manager

샘플�매니페스트

Page 34: Swift package manager

let swift(16)

Xcode�프로젝트�빌드

Page 35: Swift package manager

Xcode�프로젝트�만들기

빈�폴더�만들기�

swift�package�init�

swift�package�generate-xcodeproj�

많은�오픈소스�프로젝트들이�SPM을�도입�

Katrina�도�SwiftyJSON등의�의존성�관리

Page 36: Swift package manager

UIKit�프레임워크

import�UIKit�

error�

아직�사례�없음

Page 37: Swift package manager

SPM�@�GitHub

GitHub�Apple�페이지��

https://github.com/apple�

https://github.com/apple/swift-package-manager�

번역본�

https://github.com/lingostar/swift-package-manager

Page 38: Swift package manager

참고자료

Kostiantyn�Koval�(Swift�High�Performance)�

http://kostiakoval.github.io/posts/swift-package-manager�

Swift�Package�Lists�

https://github.com/donald-pinckney/swift-packages

Page 39: Swift package manager
Page 40: Swift package manager

let swift(16)