Swift Academy · Lektion

Package.swift: targets, produkter och beroenden

Lär dig strukturen i ett Package.swift-manifest och definiera biblioteks- och körbara produkter.

Lektion 1 av 413 steg

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 tests

Snabbkontroll

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.

Gratis att börja

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

  1. Package.swift: targets, produkter och beroenden
  2. Lokala paket och funktionsmoduler
  3. Binära targets och XCFrameworks
  4. Versionshantering, konfliktlösning och Swift-plugins
← Tillbaka till Swift Academy