Статьи

Управление зависимостями с помощью диспетчера пакетов Swift

Переход 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 и использует его методы и объекты для создания произвольно перемешанной DeckPlayingCard

Здесь будут полезны драконы

После этого введения вы, вероятно, столкнулись с проблемами при установке и использовании диспетчера пакетов Swift. Это показывает, что он, конечно, не готов к производственным приложениям. Но использовать и создавать пакеты очень просто, и если вы решите подождать стабильного Swift 3 или сразу подключиться и обновлять свой код каждый раз, когда что-то ломается, менеджер пакетов Swift является еще одной загадкой для превращения Swift в полноценный стек. язык в ближайшие 12 месяцев.

о чем ты думаешь?