Переход Swift на полноценный кроссплатформенный язык продолжается, поскольку его участники сосредоточены на выпуске версии 3. Любой язык, который хочет длительного существования, нуждается в способе добавления функциональности, который не требует, чтобы основные разработчики добавляли каждый запрос. Обычно это происходит в форме управления пакетами или зависимостями, и Swift Package Manager (SPM) будет одной из многих функций, добавленных в Swift 3.
Но то, что не было официально выпущено, никогда не останавливало любознательных разработчиков, экспериментирующих в прошлом. В этой статье я расскажу о SPM, покажу, как установить его и существующие пакеты, и как создать свой собственный.
Примечание . Вы сможете выполнить шаги, которые я представлю на платформе OS X или Linux.
Жизнь на грани с менеджером пакетов Swift
SPM не является частью текущего официального релиза Swift, и для его использования вам потребуется установить моментальные снимки разработки ствола V3. Это не так уж сложно, и вы можете найти инструкции здесь .
Поскольку установка этого снимка может нарушить ваши настройки для разработки производственных приложений, я рекомендую вам установить swiftenv , который позволяет переключаться между установленными версиями Swift и очень полезен для экспериментов с версиями Swift. После того, как вы установили swiftenv и активировали выпуск разработки для ствола, проверьте, есть ли у вас менеджер пакетов, запустив:
swift build --version
Надеемся, вы увидите что-то вроде Apple Swift Package Manager 0.1
Если вы хотите использовать XCode вместо этого, он будет управлять различными версиями Swift для вас. Откройте XCode -> Preferences и установите Toolchains в разделе Components .
Примечание : Swift быстро развивается, и все постоянно меняется, ломая проекты. Для этого урока я использовал снимок от 8 февраля для большей совместимости. Теперь вы можете понять, почему я упомянул, как переключать версии, и вы будете делать это до версии 3.
Использование существующих пакетов
Доступно много существующих пакетов Swift, но в настоящее время не существует централизованной службы листинга, такой как NPM, поэтому найти их может быть сложно. Одним из вариантов является каталог пакетов IBM Swift , но он содержит смесь пакетов CocoaPods, Carthage и Swift. Я ожидаю, что когда-нибудь в будущем будет «официальный» список.
Чтобы добавить существующий пакет в качестве зависимости к проекту, создайте файл с именем Package.swift и добавьте следующее:
import PackageDescription
let package = Package(
name: "SitePointSPM",
dependencies: []
)
Это базовая структура файла пакета, в котором вы задаете name
Чтобы добавить зависимость, измените dependencies[]
...
dependencies: [
.Package(url: "https://github.com/kylef/Curassow.git", majorVersion: 0, minor: 4),
]
...
Это загружает зависимость от URL (обычно github) с указанной версией, используя семантическое управление версиями .
Создайте папку Sources и в ней создайте Main.swift . Добавьте следующий код:
import Curassow
import Inquiline
serve { request in
return Response(.Ok, contentType: "text/plain", body: "Hello World")
}
Этот код использует пакеты Curassow и Inquiline для настройки и запуска базового http-сервера.
Выполните swift build --configuration release
Обратите внимание, что при первой сборке процесс сборки Swift загрузит зависимости, объявленные в файле пакета, а также объявленные зависимости.
Создание вашего собственного пакета
Вы создаете пакет Swift так же, как и «обычное» приложение. Но пакет обычно состоит из исходных файлов, расположенных в каталоге Sources, и включает их. Пример приложения, предоставленного Apple, является отличным примером для изучения потенциала.
В этом примере пакет PlayingCard определяет PlayingCard
Затем пакет DeckofPlayingCards импортирует пакет PlayingCard и использует его методы и объекты для создания произвольно перемешанной Deck
PlayingCard
Здесь будут полезны драконы
После этого введения вы, вероятно, столкнулись с проблемами при установке и использовании диспетчера пакетов Swift. Это показывает, что он, конечно, не готов к производственным приложениям. Но использовать и создавать пакеты очень просто, и если вы решите подождать стабильного Swift 3 или сразу подключиться и обновлять свой код каждый раз, когда что-то ломается, менеджер пакетов Swift является еще одной загадкой для превращения Swift в полноценный стек. язык в ближайшие 12 месяцев.
о чем ты думаешь?