Package.swift: cele, produkty i zależności
Budowa manifestu Package.swift oraz definiowanie produktów bibliotecznych i wykonywalnych.
Package.swift: cele, produkty i zależności to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 4. 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 4 lekcji w sumie.
Omówienie Package.swift
Package.swift to manifest Swift Package Manager. Deklaruje nazwę pakietu, wersję Swift, targety, produkty i zależności.
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [],
dependencies: [],
targets: []
)Targety
Targety to podstawowe elementy budulcowe: .target (kod biblioteki lub wykonywalny) i .testTarget (kod testów).
.target(
name: "MyFeature",
dependencies: [],
path: "Sources/MyFeature"
),
.testTarget(
name: "MyFeatureTests",
dependencies: ["MyFeature"],
path: "Tests/MyFeatureTests"
)Produkty
Produkty określają, co pakiet udostępnia odbiorcom: .library lub .executable.
.library(
name: "MyFeature",
targets: ["MyFeature"]
),
.executable(
name: "MyTool",
targets: ["MyTool"]
)Biblioteki dynamiczne a statyczne
Należy określić linkowanie za pomocą .dynamic lub .static. Linkowanie statyczne jest domyślne i powoduje mniejszy narzut, a dynamiczne umożliwia współdzielenie między modułami.
.library(
name: "MySDK",
type: .dynamic,
targets: ["MySDK"]
)Zewnętrzne zależności
Zdalne zależności pakietu należy deklarować za pomocą adresu URL i wymagania dotyczącego wersji.
.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture", exact: "1.0.0")Używanie zewnętrznych zależności w targetach
Zewnętrzne produkty pakietów należy wskazywać w zależnościach targetu za pomocą .product(name:package:).
.target(
name: "MyApp",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
)Lokalne zależności pakietów
Należy wskazać katalog lokalnego pakietu w przypadku konfiguracji monorepo lub pracy nad własnym pakietem.
.package(path: "../MySharedLibrary"),Wymagania dotyczące wersji Swift
Minimalną wersję narzędzi Swift należy ustawić na początku pliku Package.swift, a wymagania dotyczące platformy w inicjalizatorze pakietu.
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17)],
// ...
)Zasoby w targetach
Zasoby niezawierające kodu (obrazy, JSON, lokalizacja) należy dołączać za pomocą parametru resources:.
.target(
name: "MyFeature",
resources: [
.process("Resources"),
.copy("Fixtures/test_data.json")
]
)Ustawienia kompilacji i targety C
Targety mogą konfigurować flagi C i ustawienia Swift, co jest przydatne podczas opakowywania bibliotek C lub kompilacji warunkowej.
.target(
name: "CWrapper",
cSettings: [.headerSearchPath("include")],
swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)Rozwiązywanie zależności pakietu
Należy uruchomić swift package resolve, aby pobrać zależności. Rozwiązane wersje są przechowywane w pliku Package.resolved.
// Commands:
// swift package resolve – fetch dependencies
// swift package update – update to latest compatible versions
// swift build – build the package
// swift test – run testsSzybkie sprawdzenie
Który element Package.swift określa, co pakiet udostępnia innym pakietom lub aplikacjom, które od niego zależą?
Podsumowanie lekcji
Package.swift: targets to jednostki kompilacji, products udostępniają je odbiorcom, a dependencies wskazują pakiety zdalne lub lokalne. Do łączenia zewnętrznych targetów należy używać .product(name:package:). W projektach zespołowych plik Package.resolved należy zatwierdzać w repozytorium, aby zablokować wersje.
Ucz się Swift dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 122
- Lekcje
- 409
Często zadawane pytania
Czy lekcja „Package.swift: cele, produkty i zależności” jest bezpłatna?
Tak — pełny tekst „Package.swift: cele, produkty i zależności” 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 4 lekcji w sumie.
Co nauczysz się w „Package.swift: cele, produkty i zależności”?
Budowa manifestu Package.swift oraz definiowanie produktów bibliotecznych i 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 4.
Ile czasu zajmuje lekcja „Package.swift: cele, produkty i zależności”?
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
- Package.swift: cele, produkty i zależności
- Pakiety lokalne i moduły funkcji
- Cele binarne i XCFrameworks
- Wersjonowanie, rozwiązywanie konfliktów i wtyczki Swift