Theme YAML: це новий WordPress-плагін для представлення JSON-файлів у форматі YAML

У мене з’явився новий улюблений плагін, пов’язаний із розробкою WP – Theme YAML. Сашко Паукнер (Sascha Paukner) випустив його кілька днів тому. Цей плагін порадує багатьох розробників тим, адже він дозволяє створювати JSON для тем у форматі YAML.

Авторам тим потрібно буде просто створити новий файл theme.yaml і додати в нього свою конфігурацію в легкочитаному форматі YAML. Плагін перетворює його на JSON і збереже в theme.json.

Виглядає все це приблизно так:

Theme YAML

Чудово!

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 у своїй системі збирання.

Прокоментувати

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *