Что такое SwiftyConfiguration?
SwiftyConfiguration — это легковесная библиотека для управления конфигурациями приложений на Swift (iOS/macOS). Она позволяет выносить настройки (API-ключи, URL-адреса, параметры окружения) в отдельные файлы и загружать их в рантайме. В отличие от стандартного UserDefaults или Info.plist, библиотека поддерживает строгую типизацию, множественные окружения (dev/staging/prod) и автоматическую генерацию кода.
Зачем это нужно?
В реальных проектах конфигурация часто размазана по коду: одни параметры лежат в Constants.swift, другие — в UserDefaults, третьи — в .xcconfig. Это приводит к путанице, ошибкам при мердже и сложностям с поддержкой разных бэкендов. SwiftyConfiguration решает проблему единого источника истины (single source of truth) для всех настроек приложения.
Установка
Добавьте библиотеку через Swift Package Manager в Xcode: File → Add Packages → введите URL репозитория. Или через Package.swift:
dependencies: [
.package(url: "https://github.com/your-repo/SwiftyConfiguration.git", from: "1.0.0")
]После установки импортируйте модуль: import SwiftyConfiguration.
Основные функции
- Поддержка YAML/JSON/TOML — конфиги в читаемом формате.
- Типобезопасность — автоматическая десериализация в структуры Swift.
- Окружения — переключение между dev/staging/prod без изменения кода.
- Live-обновление — подписка на изменения конфига в рантайме.
- Кэширование — мемоизация для ускорения доступа.
Пример кода
Создайте файл config.yaml в корне проекта:
api:
baseUrl: "https://api.example.com"
timeout: 30
analytics:
enabled: true
appKey: "abc123"Определите модель в Swift:
import SwiftyConfiguration
struct AppConfig: Codable {
let api: API
let analytics: Analytics
struct API: Codable {
let baseUrl: String
let timeout: Int
}
struct Analytics: Codable {
let enabled: Bool
let appKey: String
}
}Загрузите конфигурацию:
let config = try Configuration.load(file: "config", type: .yaml, environment: .development)
print(config.api.baseUrl) // "https://api.example.com" Для переключения на production просто измените параметр environment или добавьте файл config.prod.yaml.
Когда использовать?
- Проекты с несколькими бэкендами (dev/staging/prod).
- Приложения, где конфигурация меняется без релиза (A/B-тесты, feature toggles).
- Микросервисная архитектура на Swift (Vapor, Kitura).
- Командная разработка — единый стандарт для всех разработчиков.
Библиотека идеально подходит для iOS- и macOS-проектов, где важна чистота кода и гибкость настройки. Избегайте её использования для супер-простых приложений с одной константой — там хватит UserDefaults. Но для всего, что сложнее «Hello World», SwiftyConfiguration сэкономит часы отладки.