У меня появился новый любимый плагин, связанный с разработкой WordPress: Theme YAML . Саша Паукнер выпустил его всего день назад, и вскоре он может найти свое место в наборах инструментов многих разработчиков тем. Это позволяет темам писать тему JSON в формате YAML .
Для использования авторам темы нужно только создать новый theme.yaml файл и начать добавлять свою пользовательскую конфигурацию в удобном для человека формате YAML. Плагин преобразует его в JSON и сохранит в theme.json
файл.
Как человек, у которого была своя доля головной боли при написании непосредственно в JSON, я никогда не был так счастлив, глядя на мой редактор кода.
Это красиво.
Я просто хотел бы сначала подумать об этой идее плагина. Я обычно работаю с файлами YAML при работе с другими системами и конвертирую данные в PHP и JSON. Это просто имело смысл, как только я увидел описание плагина.
JSON — не самый простой для написания формат при работе с конфигурационными файлами, чем и является сам theme.json
файл. Он хорошо работает для хранения данных на разных языках, но я иногда съеживаюсь, когда открываю файл 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, но хочет интеграцию со своей системой сборки.