Gestion des versions, résolution des conflits et plugins Swift
Gérer les plages de versions, résoudre les conflits de dépendances et utiliser des plugins d’outils de compilation.
Gestion des versions, résolution des conflits et plugins Swift est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Versionnement sémantique dans SPM
SPM utilise le versionnement sémantique : MAJOR.MINOR.PATCH. Déclarez les exigences avec from:, exact: ou .upToNextMajor.
.package(url: "https://github.com/apple/swift-log", from: "1.5.0"),
.package(url: "https://github.com/vapor/vapor", exact: "4.83.0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture",
.upToNextMajor(from: "1.0.0"))Package.resolved
Package.resolved verrouille les versions exactes de toutes les dépendances. Validez-le pour les applications ; omettez-le pour les bibliothèques.
// Package.resolved (auto-generated):
// Pins exact commit hash and version for every dependency
// Run "swift package update" to update pinned versionsRésoudre les conflits de versions
Lorsque deux paquets exigent des versions différentes d’une même dépendance, SPM tente de trouver une version compatible. Les conflits impossibles à résoudre provoquent une erreur de compilation.
// PackageA requires Logging 1.4.0
// PackageB requires Logging 1.5.0
// SPM resolves to 1.5.0 (satisfies both >= 1.x)
// Conflict: PackageA requires Logging 1.x, PackageB requires 2.xForcer une version
Ajoutez directement la dépendance en conflit au fichier Package.swift de votre application afin de remplacer la version que SPM aurait choisie autrement.
// Force Logging 1.5.0 by declaring it directly:
.package(url: "https://github.com/apple/swift-log", exact: "1.5.0")Modules d’extension des outils de compilation
Les modules d’extension des outils de compilation s’exécutent pendant la compilation pour générer du code source, traiter des ressources ou exécuter automatiquement des analyseurs de code.
// In Package.swift:
.plugin(
name: "SourceGenerator",
capability: .buildTool()
)Implémenter un module d’extension d’outil de compilation
Un module d’extension d’outil de compilation est conforme à BuildToolPlugin et renvoie des BuildCommand ou des PrebuildCommand.
import PackagePlugin
@main
struct SourceGenerator: BuildToolPlugin {
func createBuildCommands(context: PluginContext, target: Target) async throws -> [Command] {
let output = context.pluginWorkDirectory.appending("Generated.swift")
return [.buildCommand(
displayName: "Generating sources",
executable: try context.tool(named: "gen-tool").path,
arguments: ["--output", output],
outputFiles: [output]
)]
}
}Modules d’extension de commande
Les modules d’extension de commande s’exécutent à la demande depuis Xcode ou la CLI. Ils sont utiles pour formater le code, exécuter des analyseurs ou générer de la documentation.
// In Package.swift:
.plugin(
name: "FormatPlugin",
capability: .command(intent: .sourceCodeFormatting())
)Exécuter un module d’extension de commande
Exécutez les modules d’extension de commande depuis le terminal ou le menu contextuel accessible par clic droit dans Xcode.
// CLI:
swift package plugin format-source-code
// Xcode: right-click target → "Format Source Code"Utiliser SwiftLint comme module d’extension de compilation
SwiftLint est fourni comme module d’extension SPM qui s’exécute automatiquement à chaque compilation.
.package(url: "https://github.com/realm/SwiftLint", from: "0.54.0"),
// In target:
.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLint")Bac à sable des modules d’extension
Pour des raisons de sécurité, les modules d’extension s’exécutent dans un bac à sable avec un accès limité au système de fichiers. Ils ne peuvent écrire que dans leur répertoire de travail attribué.
// Accessible from plugins:
// context.pluginWorkDirectory — writable work dir
// context.package.directory — read-only source
// target.sourceFiles — source file listVérification rapide
Quel est le rôle de Package.resolved dans un paquet Swift ?
Récapitulatif de la leçon
Utilisez des plages de versions sémantiques dans Package.swift. Validez Package.resolved pour les applications afin d’obtenir des compilations reproductibles. Résolvez les conflits de versions en déclarant directement la dépendance. Les modules d’extension des outils de compilation s’exécutent automatiquement pendant la compilation (analyseurs, générateurs de code). Les modules d’extension de commande s’exécutent à la demande. Les modules d’extension sont isolés dans un bac à sable pour des raisons de sécurité.
Apprends Swift avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 122
- Leçons
- 409
Questions Fréquemment Posées
La leçon « Gestion des versions, résolution des conflits et plugins Swift » est-elle gratuite ?
Oui — le texte complet de « Gestion des versions, résolution des conflits et plugins Swift » 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 « Gestion des versions, résolution des conflits et plugins Swift » ?
Gérer les plages de versions, résoudre les conflits de dépendances et utiliser des plugins d’outils de compilation. 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 4 sur 4.
Combien de temps prend la leçon « Gestion des versions, résolution des conflits et plugins Swift » ?
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
- Package.swift : cibles, produits et dépendances
- Packages locaux et modules fonctionnels
- Cibles binaires et XCFrameworks
- Gestion des versions, résolution des conflits et plugins Swift