Pkl — замена YML и JSON от Apple
Оказывается, у яблочной компании есть опенсорсное решение для конфигурационных файлов. Что обычно нужно для конфигов? Понятный простой синтаксис, возможность наследоваться от базовых конфигов и расширять шаблонные, валидация схемы данных. И новый pkl (Pickle) как будто всё это умеет.
Как будто всё по коду понятно даже без объяснений. Есть наследование, есть валидация, есть схема данных, всё в понятном формате.
Конечно, менять всё в своих проектах я резко не брошусь на этот новый формат, потому что обычно в проектах вокруг конфигов есть ещё много обёрток и тулинга, а тут пока слишком молодой формат. Но поиграться в свободное время попробую.
https://www.trevorlasn.com/blog/pkl-apple-new-configuration-language
Оказывается, у яблочной компании есть опенсорсное решение для конфигурационных файлов. Что обычно нужно для конфигов? Понятный простой синтаксис, возможность наследоваться от базовых конфигов и расширять шаблонные, валидация схемы данных. И новый pkl (Pickle) как будто всё это умеет.
class AppConfig {
port: Int = 8080
logLevel: String = "INFO"
timeout: Duration = Duration.seconds(30)
function validate() {
port > 0 && port < 65536
}
}
api = new AppConfig {
port = 3000
timeout = Duration.minutes(2)
}
Как будто всё по коду понятно даже без объяснений. Есть наследование, есть валидация, есть схема данных, всё в понятном формате.
Конечно, менять всё в своих проектах я резко не брошусь на этот новый формат, потому что обычно в проектах вокруг конфигов есть ещё много обёрток и тулинга, а тут пока слишком молодой формат. Но поиграться в свободное время попробую.
https://www.trevorlasn.com/blog/pkl-apple-new-configuration-language