Bibliothèque SwiftConfig pour la gestion de configuration des applications iOS/macOS
SwiftConfig est une bibliothèque légère en langage Swift, conçue pour faciliter la gestion des configurations dans les applications iOS et macOS. Elle permet de séparer les paramètres (clés API, endpoints URL, flags de fonctionnalités) du code, en les stockant dans des fichiers structurés (JSON, YAML, plist) ou des variables d'environnement.
Pourquoi SwiftConfig est-elle nécessaire ?
Dans les applications modernes, il est souvent nécessaire de modifier le comportement sans recompilation : basculement entre serveurs staging/production, tests A/B, modification des timeouts. Le stockage manuel des configurations dans UserDefaults ou le codage en dur entraîne des erreurs et complique la maintenance. SwiftConfig résout ces problèmes en offrant :
- Un accès type-safe aux valeurs via enum et Codable
- La prise en charge de plusieurs sources (fichiers, env, UserDefaults)
- Une mise à jour automatique lors de la modification des fichiers (par exemple, pour les previews SwiftUI)
- La validation du schéma de configuration au démarrage
Installation
Ajoutez la bibliothèque via Swift Package Manager dans Xcode :
File → Add Packages → saisissez l'URL du dépôt SwiftConfigOu ajoutez-la dans Package.swift :
.package(url: "https://github.com/example/SwiftConfig.git", from: "1.0.0")Fonctionnalités principales
- Multi-format : détection automatique du format de fichier (json, yaml, plist)
- Environment overlay : les valeurs des variables d'environnement ont priorité sur les fichiers
- Mise en cache : l'analyse est effectuée une fois, puis les données sont stockées en mémoire
- Basé sur des protocoles : vous définissez un protocole avec des exigences, la bibliothèque génère l'implémentation
Exemple de code en Swift (iOS/macOS)
import SwiftConfig
// Définit la structure de configurationstruct AppConfig: Codable { let apiURL: String let timeout: Double let isFeatureXEnabled: Bool}
// Charge la configuration depuis le fichier config.jsonlet configManager = try ConfigManager<AppConfig>(source: .file("config"))
// Utilisation dans le codelet url = URL(string: configManager.current.apiURL)!let session = URLSession(configuration: .default)session.configuration.timeoutIntervalForRequest = configManager.current.timeout
// Pour SwiftUI, utilisez @Publishedclass SettingsViewModel: ObservableObject { @Published var config: AppConfig init() { self.config = try! ConfigManager<AppConfig>(source: .file("config")).current }}Quand utiliser SwiftConfig ?
- Dans les projets multi-environnements (dev/staging/prod)
- Lorsqu'il est nécessaire de modifier le comportement de l'application sans redéploiement
- Pour travailler avec des feature toggles
- Dans les bibliothèques et frameworks nécessitant une configuration via des fichiers de configuration
La bibliothèque est particulièrement utile pour les pipelines CI/CD, où les variables d'environnement sont injectées dynamiquement lors de l'étape de build. SwiftConfig prend en charge iOS 15+, macOS 12+ et est entièrement compatible avec SwiftUI et Combine.
Aussi dans la bibliothèque
Bull (File d'attente de tâches pour Node.js)
Chai pour JavaScript (Node.js) : guide complet avec exemples
Génération de rapports PDF en Java avec iText et Apache PDFBox