0Pricing
Swift Academy · Lekcja

Pakiety bibliotek a pakiety wykonywalne

Poznaj różnice między pakietami library i executable w SwiftPM: deklarowanie produktów i celów, korzystanie z bibliotek oraz uruchamianie plików wykonywalnych.

Pakiety bibliotek a pakiety wykonywalne to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 3 lekcji w sumie.

Dwa rodzaje produktów

Pakiety SwiftPM mogą być dostarczane jako biblioteka (kod do zaimportowania) lub produkt wykonywalny (uruchamialne narzędzie).

  • Deklaruj produkty w Package.swift
  • Organizuj targety i źródła
  • Korzystaj z bibliotek; uruchamiaj produkty wykonywalne

Podstawy produktu bibliotecznego

Biblioteka udostępnia moduły, które inni mogą zaimportować za pomocą import. Punkt wejścia nie jest wymagany.

// 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

Podstawy produktu wykonywalnego

Produkt wykonywalny ma punkt wejścia (main.swift) i tworzy uruchamialny plik binarny (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)")

Zależności od bibliotek

Użyj .package i .product w projekcie korzystającym z biblioteki, aby ją zaimportować. Przypnij wersję za pomocą wersjonowania semantycznego (np. 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.")

Podział odpowiedzialności

Współdziel kod: umieść główną logikę w bibliotece, a produkt wykonywalny pozostaw cienką warstwą pośrednią.

// 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.")

Polecenia budowania i uruchamiania

Buduj biblioteki za pomocą swift build i testuj je za pomocą swift test. Uruchamiaj produkty wykonywalne za pomocą 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.")

Definicja biblioteki i produktu wykonywalnego

Szybkie sprawdzenie: Co odróżnia bibliotekę od produktu wykonywalnego w SwiftPM?

Podsumowanie

Podsumowanie: Używaj biblioteki do współdzielenia kodu między aplikacjami, a produktu wykonywalnego do dostarczania narzędzia CLI. Deklaruj produkty i targety w Package.swift, a zależności od bibliotek określaj za pomocą .package + .product.

Często zadawane pytania

Czy lekcja „Pakiety bibliotek a pakiety wykonywalne” jest bezpłatna?

Tak — pełny tekst „Pakiety bibliotek a pakiety wykonywalne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Pakiety bibliotek a pakiety wykonywalne”?

Poznaj różnice między pakietami library i executable w SwiftPM: deklarowanie produktów i celów, korzystanie z bibliotek oraz uruchamianie plików wykonywalnych. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.

Ile czasu zajmuje lekcja „Pakiety bibliotek a pakiety wykonywalne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pakiety bibliotek a pakiety wykonywalne
  2. Wersjonowanie semantyczne i oznaczanie wydań
  3. Podstawy CI z użyciem swift test i artefaktów
← Powrót do Swift Academy