Друзья, привет! Apple выпустила долгожданную библиотеку Swift Configuration - универсальное решение для управления настройками в Swift-проектах. Расскажу, чем она полезна и как начать ее использовать.
Что такое Swift Configuration:
Данная библиотека предоставляет единый интерфейс для чтения настроек из различных источников. Больше не нужно писать разный код для работы с переменными окружения, JSON-файлами и аргументами командной строки.
Основные возможности:
🔹 Единый API: одинаковый код для всех источников настроек.
🔹 Горячее обновление: изменения применяются без перезапуска приложения.
🔹 Поддержка вложенности: работа со сложными структурами настроек.
🔹 Приоритеты источников: четкая иерархия важности настроек.
Пример:
import Configuration
// Настройка чтения из разных источников
let config = ConfigReader(providers: [
EnvironmentVariablesProvider(), // Переменные окружения
CommandLineArgumentsProvider(), // Аргументы командной строки
try await JSONProvider(filePath: "/app/config.json") // JSON-файл
])
// Чтение значения (ищет в порядке приоритета)
let timeout = config.int(forKey: "http.timeout", default: 30)
let host = config.string(forKey: "database.host", default: "localhost")
Как это работает в реальном проекте:
Представьте, у вас есть базовые настройки в JSON:
{
"database": {
"host": "localhost",
"port": 5432
}
}
Но для production вы можете переопределить их через переменные окружения:
export DATABASE_HOST=production_db.test.ru
Библиотека автоматически выберет значение из переменной окружения как более приоритетное.
Преимущества:
🔹 Снижение количества шаблонного кода: больше не нужно писать парсеры для каждого типа конфигов.
🔹 Упрощение тестирования: легко подменять настройки в тестах.
🔹 Гибкость развертывания: разные среды через разные источники настроек.
🔗 Ссылка на подробную статью
💡 Вывод:
Swift Configuration - это серьезный шаг к стандартизации работы с настройками в Swift-экосистеме. Библиотека пока сыровата для продакшена, но идеи стоят внимания. Особенно ценна унификация доступа к разным источникам конфигов.
➡️ Подписаться на канал
Мобильный трудоголик