0Pricing
Swift Academy · Урок

Пакеты библиотек и исполняемых файлов

Изучите различия между пакетами 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 — локальная установка не требуется.

Все уроки этого курса

  1. Пакеты библиотек и исполняемых файлов
  2. Семантическое версионирование и маркировка выпусков
  3. Основы CI с помощью swift test и артефактов
← Назад к Swift Academy