![](https://oddstyle.ru/wp-content/uploads/2022/03/theme-yaml-file-1536x874-1.jpg)
У меня появился новый любимый плагин, связанный с разработкой WP – Theme YAML. Саша Паукнер (Sascha Paukner) выпустил его несколько дней назад. Этот плагин порадует многих разработчиков тем, ведь он позволяет создавать JSON для тем в формате YAML.
Авторам тем нужно будет просто создать новый файл theme.yaml и добавить в него свою конфигурацию в удобочитаемом формате YAML. Плагин преобразует его в JSON и сохранит в theme.json.
![Блог Миши Рудрастых](https://oddstyle.ru/wp-content/uploads/2020/09/banner2.jpg)
Выглядит все это примерно так:
Великолепно!
JSON – не самый простой для написания формат при работе с конфигурационными файлами (такими как, собственно, theme.json). Он прекрасно подходит для хранения данных на разных языках, однако изменять или корректировать в нем что-либо практически нереально. Обычно он содержит сотни или тысячи строк. Также в нем нельзя оставлять встроенные комментарии, чтобы напомнить себе или другим, почему было принято то или иное решение.
YAML лучше? У него есть и свои плюсы, и свои минусы. Как показывает моя практика, синтаксис может отпугнуть некоторых новичков. Однако поддержка встроенных комментариев – его существенный плюс.
Документация плагина оставляет много вопросов. В ней ничего не сказано, как все это работает. Есть ли настройки для конвертации? Происходит ли все это автоматически? Происходит ли конвертация при каждой загрузке страницы?
Я решил посмотреть в код, чтобы понять, как работает плагин. В итоге я выяснил следующее: плагин автоматически ищет файл theme.yaml в корневой папке активной темы при загрузке страницы. Если файл найден, то тогда производится проверка времени его последнего изменения и это значение сохраняется в базу данных. Когда есть новые модификации файла, плагин парсит theme.yaml, конвертирует его в JSON и записывает результат в theme.json.
Если тема является дочерней, процесс пойдет автоматически для родительской темы.
Минус плагина – он оставляет JSON минимизированным, что затрудняет его чтение. Это нормально, если у вас есть файл theme.yaml под рукой. Однако при отправке тем в каталог WordPress.org такие файлы не должны быть в ZIP-архиве.
Я считаю, что код должен быть удобочитаемым и редактируемым для всех, кто получает копию темы. Авторы тем могут пойти несколькими путями. Можно отправить сразу оба файла theme.json и theme.yaml либо изменить следующий код в файле плагина:
$themeJson = json_encode($themeObject, JSON_UNESCAPED_SLASHES);
Нам нужно включить флаг JSON_PRETTY_PRINT для функции json_encode():
$themeJson = json_encode($themeObject, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
Надеюсь, что разработчик плагина внесет соответствующие изменения в следующий релиз.
Существуют и другие подходы для авторов тем, избегающих редактировать theme.json. Раньше я разбивал свой JSON по нескольким файлам, чтобы получить удобные и понятные фрагменты. Затем я применял плагин webpack для их слияния во время сборки.
Я рекомендую использовать JS YAML Parser или аналогичный пакет для тех, кто предпочитает работать с YAML в своей системе сборки.
Источник: wptavern.com