Package.swift: Targets, Produkte und Abhängigkeiten
Verstehen Sie den Aufbau eines Package.swift-Manifests und definieren Sie Bibliotheks- und ausführbare Produkte.
Package.swift: Targets, Produkte und Abhängigkeiten ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Package.swift im Überblick
Package.swift ist das Manifest für den Swift Package Manager. Es definiert den Paketnamen, die Swift-Version, Targets, Produkte und Abhängigkeiten.
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [],
dependencies: [],
targets: []
)Targets
Targets sind die grundlegenden Bausteine: .target (Bibliotheks- oder ausführbarer Code) und .testTarget (Testcode).
.target(
name: "MyFeature",
dependencies: [],
path: "Sources/MyFeature"
),
.testTarget(
name: "MyFeatureTests",
dependencies: ["MyFeature"],
path: "Tests/MyFeatureTests"
)Produkte
Produkte definieren, was ein Paket für seine Nutzer bereitstellt: .library oder .executable.
.library(
name: "MyFeature",
targets: ["MyFeature"]
),
.executable(
name: "MyTool",
targets: ["MyTool"]
)Dynamische oder statische Bibliotheken
Geben Sie das Linking mit .dynamic oder .static an. Statisch ist die Standardeinstellung und verursacht weniger Overhead; dynamisch ermöglicht die gemeinsame Nutzung über mehrere Module hinweg.
.library(
name: "MySDK",
type: .dynamic,
targets: ["MySDK"]
)Externe Abhängigkeiten
Deklarieren Sie Abhängigkeiten von Remote-Paketen mit einer URL und einer Versionsanforderung.
.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")Externe Abhängigkeiten in Targets verwenden
Referenzieren Sie Produkte externer Pakete in den Target-Abhängigkeiten mit .product(name:package:).
.target(
name: "MyApp",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
)Abhängigkeiten von lokalen Paketen
Referenzieren Sie für Monorepo-Konfigurationen oder bei der Weiterentwicklung eines eigenen Pakets ein lokales Paketverzeichnis.
.package(path: "../MySharedLibrary"),Anforderungen an die Swift-Version
Legen Sie oben in Package.swift die minimale Swift-Tools-Version und im Package-Initializer die Plattformanforderungen fest.
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17)],
// ...
)Ressourcen in Targets
Fügen Sie Nicht-Code-Ressourcen (Bilder, JSON, Lokalisierung) mithilfe des Parameters resources: hinzu.
.target(
name: "MyFeature",
resources: [
.process("Resources"),
.copy("Fixtures/test_data.json")
]
)Build-Einstellungen und C-Targets
Targets können C-Flags und Swift-Einstellungen konfigurieren, was beim Einbinden von C-Bibliotheken oder bei bedingter Kompilierung nützlich ist.
.target(
name: "CWrapper",
cSettings: [.headerSearchPath("include")],
swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)Paketauflösung
Führen Sie swift package resolve aus, um Abhängigkeiten abzurufen. Die aufgelösten Versionen werden in Package.resolved gespeichert.
// Commands:
// swift package resolve – fetch dependencies
// swift package update – update to latest compatible versions
// swift build – build the package
// swift test – run testsKurze Überprüfung
Welches Element von Package.swift definiert, was das Paket für andere Pakete oder darauf aufbauende Apps bereitstellt?
Zusammenfassung der Lektion
Package.swift: targets sind Baueinheiten, products stellen sie für Nutzer bereit und dependencies referenzieren Remote- oder lokale Pakete. Verwenden Sie .product(name:package:), um externe Targets zu verknüpfen. Übernehmen Sie Package.resolved in die Versionsverwaltung, um die Versionen in Teamprojekten festzuschreiben.
Lerne Swift mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 122
- Lektionen
- 409
Häufig gestellte Fragen
Ist die Lektion „Package.swift: Targets, Produkte und Abhängigkeiten“ kostenlos?
Ja — der vollständige Text von „Package.swift: Targets, Produkte und Abhängigkeiten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Package.swift: Targets, Produkte und Abhängigkeiten“?
Verstehen Sie den Aufbau eines Package.swift-Manifests und definieren Sie Bibliotheks- und ausführbare Produkte. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Package.swift: Targets, Produkte und Abhängigkeiten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Package.swift: Targets, Produkte und Abhängigkeiten
- Lokale Pakete und Feature-Module
- Binärziele und XCFrameworks
- Versionierung, Konfliktauflösung und Swift-Plugins