Пакеты библиотек и исполняемых файлов
Изучите различия между пакетами library и executable в SwiftPM: объявление продуктов и целей, использование библиотек и запуск исполняемых файлов.
«Пакеты библиотек и исполняемых файлов» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 3 уроков всего.
Два типа продуктов
Пакеты SwiftPM можно поставлять как library (код для импорта) или как executable (запускаемый инструмент).
- Объявляйте продукты в
Package.swift - Организуйте цели и исходный код
- Используйте библиотеки и запускайте исполняемые программы
Основы продукта library
Продукт library предоставляет модули, которые можно импортировать с помощью import. Точка входа не требуется.
// Package.swift (illustrative library)
// import PackageDescription
// let package = Package(
// name: "GreeterLib",
// products: [
// .library(name: "GreeterLib", targets: ["GreeterLib"]),
// ],
// targets: [
// .target(name: "GreeterLib"),
// .testTarget(name: "GreeterLibTests", dependencies: ["GreeterLib"]),
// ]
// )
//
// Sources/GreeterLib/Greeter.swift
public struct Greeter {
public init() {}
public func hello(_ name: String) -> String { "Hello, \\(name)!" }
}
print(Greeter().hello("Ana")) // demo runОсновы продукта executable
Продукт executable имеет точку входа (main.swift) и создаёт запускаемый двоичный файл (swift run).
// Package.swift (illustrative executable)
// import PackageDescription
// let package = Package(
// name: "greeter",
// products: [ .executable(name: "greeter", targets: ["App"]) ],
// targets: [ .executableTarget(name: "App") ]
// )
//
// Sources/App/main.swift
let args = CommandLine.arguments.dropFirst()
let who = args.first ?? "world"
print("Hello, \\(who)")Зависимости от библиотек
Используйте .package и .product в потребляющем пакете, чтобы импортировать библиотеку. Фиксируйте версию с помощью семантических версий (например, from: "1.0.0").
// In the consumer's Package.swift (illustrative):
// dependencies: [
// .package(url: "https://example.com/GreeterLib.git", from: "1.0.0")
// ],
// targets: [
// .executableTarget(
// name: "App",
// dependencies: [ .product(name: "GreeterLib", package: "GreeterLib") ]
// )
// ]
//
// Sources/App/main.swift
// import GreeterLib
struct Dummy {}
print("Add import GreeterLib in your app to use its APIs.")Разделение обязанностей
Переиспользуйте код: помещайте основную логику в library, а executable оставляйте тонкой оболочкой.
// Package.swift can expose both a library and an executable:
// products: [
// .library(name: "GreeterLib", targets: ["GreeterLib"]),
// .executable(name: "greeter", targets: ["GreeterCLI"]),
// ],
// targets: [
// .target(name: "GreeterLib"),
// .executableTarget(name: "GreeterCLI", dependencies: ["GreeterLib"]),
// ]
//
// Reuse logic in the library; keep CLI thin.
print("Tip: put reusable logic in the library; the CLI depends on it.")Команды сборки и запуска
Собирайте библиотеки с помощью swift build и проверяйте их с помощью swift test. Запускайте исполняемые программы командой swift run <name>.
// Library: build & test
// swift build
// swift test
//
// Executable: run & release
// swift run greeter Ana
// swift build -c release
//
// Artifact:
// .build/release/greeter
print("Use swift run for executables; import libraries into apps.")Определение library и executable
Быстрая проверка: чем library отличается от executable в SwiftPM?
Итоги
Итоги: используйте library для совместного использования кода между приложениями, а executable — для поставки CLI или инструмента. Объявляйте продукты и цели в Package.swift, а зависимости от библиотек задавайте через .package + .product.
Часто задаваемые вопросы
Урок «Пакеты библиотек и исполняемых файлов» бесплатный?
Да — полный текст урока «Пакеты библиотек и исполняемых файлов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 3 уроков всего.
Чему я научусь в уроке «Пакеты библиотек и исполняемых файлов»?
Изучите различия между пакетами library и executable в SwiftPM: объявление продуктов и целей, использование библиотек и запуск исполняемых файлов. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Пакеты библиотек и исполняемых файлов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Пакеты библиотек и исполняемых файлов
- Семантическое версионирование и маркировка выпусков
- Основы CI с помощью swift test и артефактов