Package.swift: target, prodotti e dipendenze
Esaminare la struttura di un manifest Package.swift e definire prodotti di libreria ed eseguibili.
Package.swift: target, prodotti e dipendenze è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Panoramica di Package.swift
Package.swift è il manifest di Swift Package Manager. Dichiara il nome del pacchetto, la versione di Swift, i target, i prodotti e le dipendenze.
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [],
dependencies: [],
targets: []
)Target
I target sono gli elementi fondamentali: .target (codice di librerie/eseguibili) e .testTarget (codice dei test).
.target(
name: "MyFeature",
dependencies: [],
path: "Sources/MyFeature"
),
.testTarget(
name: "MyFeatureTests",
dependencies: ["MyFeature"],
path: "Tests/MyFeatureTests"
)Prodotti
I prodotti definiscono ciò che un pacchetto espone ai consumer: .library o .executable.
.library(
name: "MyFeature",
targets: ["MyFeature"]
),
.executable(
name: "MyTool",
targets: ["MyTool"]
)Librerie dinamiche e statiche
Specificare il linking .dynamic o .static. Il linking statico è quello predefinito e produce un overhead minore; quello dinamico consente la condivisione tra i moduli.
.library(
name: "MySDK",
type: .dynamic,
targets: ["MySDK"]
)Dipendenze esterne
Dichiarare le dipendenze da pacchetti remoti con un URL e un requisito di versione.
.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")Utilizzo delle dipendenze esterne nei target
Fare riferimento ai prodotti dei pacchetti esterni nelle dipendenze dei target usando .product(name:package:).
.target(
name: "MyApp",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
)Dipendenze da pacchetti locali
Fare riferimento alla directory di un pacchetto locale per configurazioni monorepo o per lavorare su un pacchetto di propria proprietà.
.package(path: "../MySharedLibrary"),Requisiti della versione di Swift
Impostare la versione minima degli strumenti Swift all'inizio di Package.swift e i requisiti delle piattaforme nell'inizializzatore del pacchetto.
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17)],
// ...
)Risorse nei target
Includere risorse non di codice (immagini, JSON, localizzazione) usando il parametro resources:.
.target(
name: "MyFeature",
resources: [
.process("Resources"),
.copy("Fixtures/test_data.json")
]
)Impostazioni di build e target C
I target possono configurare flag C e impostazioni Swift, utili per creare wrapper per librerie C o per la compilazione condizionale.
.target(
name: "CWrapper",
cSettings: [.headerSearchPath("include")],
swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)Risoluzione dei pacchetti
Eseguire swift package resolve per recuperare le dipendenze. Le versioni risolte vengono memorizzate in Package.resolved.
// Commands:
// swift package resolve – fetch dependencies
// swift package update – update to latest compatible versions
// swift build – build the package
// swift test – run testsVerifica rapida
Quale elemento di Package.swift definisce ciò che il pacchetto espone agli altri pacchetti o alle app che dipendono da esso?
Riepilogo della lezione
In Package.swift, i targets sono unità di build, i products li espongono ai consumer e le dependencies fanno riferimento a pacchetti remoti o locali. Usare .product(name:package:) per collegare target esterni. Eseguire il commit di Package.resolved per bloccare le versioni nei progetti di team.
Impara Swift con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 122
- Lezioni
- 409
Domande Frequenti
La lezione «Package.swift: target, prodotti e dipendenze» è gratuita?
Sì — il testo completo di «Package.swift: target, prodotti e dipendenze» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Package.swift: target, prodotti e dipendenze»?
Esaminare la struttura di un manifest Package.swift e definire prodotti di libreria ed eseguibili. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Package.swift: target, prodotti e dipendenze»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Package.swift: target, prodotti e dipendenze
- Package locali e moduli funzionali
- Target binari e XCFramework
- Versionamento, risoluzione dei conflitti e Swift Plugin