0Pricing
Swift Academy · Leçon

Package.swift : cibles, produits et dépendances

Découvrir la structure d’un manifeste Package.swift et définir des produits de bibliothèque et des produits exécutables.

Package.swift : cibles, produits et dépendances est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Présentation de Package.swift

Package.swift est le manifeste de Swift Package Manager. Il déclare le nom du paquet, la version de Swift, les cibles, les produits et les dépendances.

import PackageDescription
let package = Package(
  name: "MyLibrary",
  platforms: [.iOS(.v16), .macOS(.v13)],
  products: [],
  dependencies: [],
  targets: []
)

Cibles

Les cibles sont les blocs de construction de base : .target (code de bibliothèque ou d’exécutable) et .testTarget (code de test).

.target(
  name: "MyFeature",
  dependencies: [],
  path: "Sources/MyFeature"
),
.testTarget(
  name: "MyFeatureTests",
  dependencies: ["MyFeature"],
  path: "Tests/MyFeatureTests"
)

Produits

Les produits définissent ce qu’un paquet expose à ses consommateurs : .library ou .executable.

.library(
  name: "MyFeature",
  targets: ["MyFeature"]
),
.executable(
  name: "MyTool",
  targets: ["MyTool"]
)

Bibliothèques dynamiques ou statiques

Indiquez une liaison .dynamic ou .static. La liaison statique est utilisée par défaut et génère moins de surcharge ; la liaison dynamique permet le partage entre les modules.

.library(
  name: "MySDK",
  type: .dynamic,
  targets: ["MySDK"]
)

Dépendances externes

Déclarez les dépendances de paquets distants avec une URL et une contrainte de version.

.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")

Utilisation de dépendances externes dans les cibles

Référencez les produits de paquets externes dans les dépendances des cibles avec .product(name:package:).

.target(
  name: "MyApp",
  dependencies: [
    .product(name: "Algorithms", package: "swift-algorithms"),
    .product(name: "ComposableArchitecture", package: "swift-composable-architecture")
  ]
)

Dépendances de paquets locaux

Référencez le dossier d’un paquet local pour organiser un monorepo ou travailler sur un paquet dont vous êtes propriétaire.

.package(path: "../MySharedLibrary"),

Contraintes de version de Swift

Définissez la version minimale des outils Swift en haut de Package.swift et les exigences de plateforme dans l’initialiseur du paquet.

// swift-tools-version: 5.9
import PackageDescription
let package = Package(
  name: "MyPackage",
  platforms: [.iOS(.v17)],
  // ...
)

Ressources dans les cibles

Incluez les ressources qui ne sont pas du code (images, JSON, fichiers de localisation) à l’aide du paramètre resources:.

.target(
  name: "MyFeature",
  resources: [
    .process("Resources"),
    .copy("Fixtures/test_data.json")
  ]
)

Paramètres de compilation et cibles C

Les cibles peuvent configurer des indicateurs C et des paramètres Swift, ce qui est utile pour envelopper des bibliothèques C ou effectuer une compilation conditionnelle.

.target(
  name: "CWrapper",
  cSettings: [.headerSearchPath("include")],
  swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)

Résolution du paquet

Exécutez swift package resolve pour récupérer les dépendances. Les versions résolues sont stockées dans 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

Vérification rapide

Quel élément de Package.swift définit ce que le paquet expose aux autres paquets ou applications qui en dépendent ?

Récapitulatif de la leçon

Package.swift : les targets sont les unités de compilation, les products les exposent aux consommateurs et les dependencies référencent des paquets distants ou locaux. Utilisez .product(name:package:) pour lier des cibles externes. Enregistrez Package.resolved pour verrouiller les versions dans les projets d’équipe.

Questions Fréquemment Posées

La leçon « Package.swift : cibles, produits et dépendances » est-elle gratuite ?

Oui — le texte complet de « Package.swift : cibles, produits et dépendances » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Package.swift : cibles, produits et dépendances » ?

Découvrir la structure d’un manifeste Package.swift et définir des produits de bibliothèque et des produits exécutables. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Package.swift : cibles, produits et dépendances » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Package.swift : cibles, produits et dépendances
  2. Packages locaux et modules fonctionnels
  3. Cibles binaires et XCFrameworks
  4. Gestion des versions, résolution des conflits et plugins Swift
← Retour à Swift Academy