Package.swift: targets, produkter och beroenden
Lär dig strukturen i ett Package.swift-manifest och definiera biblioteks- och körbara produkter.
Package.swift: targets, produkter och beroenden är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.
Översikt över Package.swift
Package.swift är manifestfilen för Swift Package Manager. Den deklarerar paketnamn, Swift-version, mål, produkter och beroenden.
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [],
dependencies: [],
targets: []
)Mål
Mål är de grundläggande byggblocken: .target (biblioteks- och körbar kod) och .testTarget (testkod).
.target(
name: "MyFeature",
dependencies: [],
path: "Sources/MyFeature"
),
.testTarget(
name: "MyFeatureTests",
dependencies: ["MyFeature"],
path: "Tests/MyFeatureTests"
)Produkter
Produkter definierar vad ett paket exponerar för användare: .library eller .executable.
.library(
name: "MyFeature",
targets: ["MyFeature"]
),
.executable(
name: "MyTool",
targets: ["MyTool"]
)Dynamiska och statiska bibliotek
Ange länkning med .dynamic eller .static. Statisk länkning är standard och ger mindre overhead; dynamisk länkning möjliggör delning mellan moduler.
.library(
name: "MySDK",
type: .dynamic,
targets: ["MySDK"]
)Externa beroenden
Deklarera beroenden till fjärrpaket med en URL och ett versionskrav.
.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")Använda externa beroenden i mål
Referera till externa paketprodukter i målens beroenden med .product(name:package:).
.target(
name: "MyApp",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
)Lokala paketberoenden
Referera till en lokal paketkatalog för monorepo-konfigurationer eller när ett paket som ägs av organisationen utvecklas vidare.
.package(path: "../MySharedLibrary"),Krav på Swift-version
Ange den lägsta versionen av Swift-verktygen högst upp i Package.swift och plattformskraven i paketets initierare.
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17)],
// ...
)Resurser i mål
Inkludera resurser som inte är kod (bilder, JSON, lokalisering) med parametern resources:.
.target(
name: "MyFeature",
resources: [
.process("Resources"),
.copy("Fixtures/test_data.json")
]
)Bygginställningar och C-mål
Mål kan konfigurera C-flaggor och Swift-inställningar, vilket är användbart för att omsluta C-bibliotek eller använda villkorlig kompilering.
.target(
name: "CWrapper",
cSettings: [.headerSearchPath("include")],
swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)Paketupplösning
Kör swift package resolve för att hämta beroenden. De upplösta versionerna lagras i Package.resolved.
// Commands:
// swift package resolve – fetch dependencies
// swift package update – update to latest compatible versions
// swift build – build the package
// swift test – run testsSnabbkontroll
Vilken del av Package.swift definierar vad paketet exponerar för andra paket eller appar som är beroende av det?
Lektionssammanfattning
I Package.swift är targets byggenheter, products exponerar dem för användare och dependencies refererar till fjärrpaket eller lokala paket. Använd .product(name:package:) för att länka externa mål. Checka in Package.resolved för att låsa versionerna i teamprojekt.
Lär dig Swift med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 122
- Lektioner
- 409
Vanliga frågor
Är lektionen ”Package.swift: targets, produkter och beroenden” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Package.swift: targets, produkter och beroenden”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Package.swift: targets, produkter och beroenden”?
Lär dig strukturen i ett Package.swift-manifest och definiera biblioteks- och körbara produkter. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Swift Academy?
Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Package.swift: targets, produkter och beroenden”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Swift Academy-lektionen?
Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Package.swift: targets, produkter och beroenden
- Lokala paket och funktionsmoduler
- Binära targets och XCFrameworks
- Versionshantering, konfliktlösning och Swift-plugins