let swift(16)
스위프트 패키지 매니저
Swift Package Manager
윤성관 lingostar
let swift(16)
윤성관
lingostar
Coder’sHigh
Agenda
들어가기
용어정리
패키지 매니저 준비
간단한 프로그램 빌드
의존성을 포함한 프로그램 빌드
Xcode 프로젝트 ?
let swift(16)
들어가기
–Hair Froce one
“Swift is now open source.”
리눅스에서도 스위프트 사용할 수 있어
코어 라이브러리는 멋있어졌어
스위프트 패키지 매니저도 만들었어
WWDC16에서 패키지 매니저
60초~!
1분~!
7,000여분 중에 1분 ~!
목표 :
WWDC2017의
패키지 매니저 세션 관전 포인트
let swift(16)
용어정리
패키지
소프트웨어, 응용프로그램, 데이터의 ‘배포판’
메타데이터를 포함
패키지 매니저
설치, 업데이트, 설정, 삭제를 자동화 해주는 툴
소프트웨어의 의존성이나 버전 정보 관리
ex) 앱 스토어
ex) MacPorts, Homebrew, CocoaPods
ex) Alcatraz - Xcode용 플러그인 패키지 매니저
패키지 컨벤션
원활한 배포를 위해 패키지 구조에 대한 규칙 정의
앱스토어에 앱 올릴 때 패키지 검사
엔드유저는 패키지 매니저의 사용법만 알면 됨
앱스토어 사용법만 아시면 됩니다 (카드 비번이랑)
원활한 배포 - 의존성 문제
let swift(16)
패키지 매니저 준비
Swift Dev. Snapshot 설치
https://swift.org/download/#snapshots
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}"
let swift(16)
간단한 프로그램 빌드
매니페스트
메타데이터를 가지고 있는 파일. 화물선의 화물 리
스트
Package.swift
스위프트 언어로 패키지 매니저의 매니페스트를 정
의
여러분, 스위프트를 배우면 프로젝트 설정도 가능합니
다.
프로젝트 폴더 구조
프로젝트 폴더
Package.swift
Sources
소스코드들
.build/debug/
let swift(16)
Demo - 간단한 빌드
방금 한 예제는
swift.org
Getting Started
let swift(16)
의존성을 포함한 프로그램 빌드
프로젝트 폴더 구조
프로젝트 폴더
Package.swift
Sources
소스코드들
Packages
의존성을 가지는 패키지들
.build/debug/
Dealer
DeckOfPlayingCard
FisherYatesPlayingCard
swift build
let swift(16)
Demo - 의존성 빌드
Package 클래스
내부에 Dependency 클래스를 정의
Target에서 다시 Dependency를 enum으로 정의하기 때문
let name:String?
let pkgConfig:String?
let providers: [SystemPackageProvider]?
var targets: [Target]
var dependencies: [Dependency]
var exclude: [String]
Package 클래스
SystemPackageProvider 는 enum
case Brew , Apt
let name:String?
let pkgConfig:String?
let providers: [SystemPackageProvider]?
var targets: [Target]
var dependencies: [Dependency]
var exclude: [String]
Dependency 클래스
let versionRange: Range<Version>
let url: String
Package(…,…) -> Dependency
Target 클래스
내부에 Dependency enum을 정의
let name: String
var dependencies: [Dependency]
샘플 매니페스트
샘플 매니페스트
let swift(16)
Xcode 프로젝트 빌드
Xcode 프로젝트 만들기
빈 폴더 만들기
swift package init
swift package generate-xcodeproj
많은 오픈소스 프로젝트들이 SPM을 도입
Katrina 도 SwiftyJSON등의 의존성 관리
UIKit 프레임워크
import UIKit
error
아직 사례 없음
SPM @ GitHub
GitHub Apple 페이지
https://github.com/apple
https://github.com/apple/swift-package-
manager
번역본
https://github.com/lingostar/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
let swift(16)

Swift package manager