import PackageDescription let package = Package( name: "Dealer", dependencies: [ .Package(url: "https://github.com/apple/example-package-deckofplayingcards.git", majorVersion: 1), ] )
这里面定义了我们这个包的名称: name: "Dealer" , 然后还定义了它的依赖关系, 它依赖于另外一个代码库:
https://github.com/apple/example-package-deckofplayingcards.git
通过 Package.swift 的定义, swift build 命令就可以根据相应的依赖关系,自动为我们的项目抓取那些需要的第三方库。
我们现在可以运行 build 命令:
swift build
可以看到, swift build 正在替我们把各种项目的依赖关系处理了一遍:
Cloning Packages/example-package-deckofplayingcards Cloning Packages/example-package-fisheryates Cloning Packages/example-package-playingcard Compiling Swift Module 'FisherYates' (1 sources) Linking Library: .build/debug/FisherYates.a Compiling Swift Module 'PlayingCard' (3 sources) Linking Library: .build/debug/PlayingCard.a Compiling Swift Module 'DeckOfPlayingCards' (1 sources) Linking Library: .build/debug/DeckOfPlayingCards.a Compiling Swift Module 'Dealer' (1 sources) Linking Executable: .build/debug/Dealer
从输出可以看到,我们复制出来的这个项目的依赖项目,又依赖了其他的项目,形成了一个依赖链条。
当 swift build 命令运行完成自后,我们会发现项目的根目录中多了一个 Packages 目录,这个目录里面存放了我们抓取下来的依赖项目:
+ Packages | example-package-deckofplayingcards-1.0.2 | example-package-fisheryates-1.0.2 | example-package-playingcard-1.0.1
这个就是 Swift 包管理系统的基本概念了。
结语相信关于包管理,我们应该并不陌生,Swift 包管理和 CocoaPods , Carthage 这些我们常用的包管理工具很类似,随让Swift 包管理工具不是第一个,但这确是苹果公司的第一次,相信开源后的 Swift 会更加壮大。
Swift 正式开源,同时开源 Swfit 核心库和包管理器
Swift 的详细介绍:请点这里