Добавить объявление

Swift Configuration: новая библиотека для работы с настройками от Apple

Друзья, привет! 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
}
}

Но для прода вы можете переопределить их через переменные окружения:

export DATABASE_HOST=production_db.test.ru

Библиотека автоматически выберет значение из переменной окружения как более приоритетное.

Преимущества:


  • Снижение количества шаблонного кода: больше не нужно писать парсеры для каждого типа конфигов.

  • Упрощение тестирования: легко подменять настройки в тестах.

  • Гибкость развертывания: разные среды через разные источники настроек.

Вывод:


Swift Configuration - это серьезный шаг к стандартизации работы с настройками в Swift-экосистеме. Библиотека пока сыровата для продакшена, но идеи стоят внимания. Особенно ценна унификация доступа к разным источникам конфигов.
23.10.2025 8 481