Pint 1.30.0 навчився форматувати Blade-шаблони. Досі Pint свідомо обходив .blade.php стороною, і кожен вирішував це питання сам - зазвичай окремим конфігом Prettier поруч з конфігом Pint.
Як увімкнути
Найшвидший спосіб - прапорець:
./vendor/bin/pint --blade
Він вмикає правило Pint/laravel_blade. Щоб не згадувати про прапорець щоразу, пропишіть правило в pint.json:
{
"preset": "laravel",
"rules": {
"Pint/laravel_blade": true
}
}
Після цього звичайний pint форматує і PHP, і Blade.
Що саме форматується
Під капотом - Prettier і плагін prettier-plugin-blade Шухея Хаясібари, той самий, що лежить в основі blade-formatter. Тобто Laravel не писав власний форматер, а взяв перевірений інструмент спільноти й прибрав ручне налаштування.
Обробляються:
- Blade-синтаксис і вкладені директиви;
- атрибути Alpine;
wire:-звʼязки Livewire;
- компоненти Flux;
- сортування класів Tailwind;
- блоки
@verbatim;
- heredoc та інлайновий SVG;
- класи однофайлових компонентів.
Сортування класів Tailwind тут варте окремої згадки: суперечки про порядок утиліт у class - класична тема code review, яку тепер закриває інструмент.
Форматує Node, а не PHP
Головна практична деталь: правило виконується не на PHP. Потрібні три npm-пакети:
prettier (^3.8.4)
prettier-plugin-blade (^3.2.2)
prettier-plugin-tailwindcss (^0.8.0)
Якщо їх немає, Pint це помічає, визначає ваш пакетний менеджер і пропонує встановити - кожен з потрібним обмеженням версії. Тобто ручного налаштування майже немає, але залежність від Node зʼявляється. Для CI це означає, що на кроці лінтингу тепер має бути не лише PHP.
Що Pint не чіпає
Навіть з увімкненим правилом форматер обходить:
- файли Envoy -
Envoy.blade.php і envoy.blade.php;
- гайдлайни Boost у
resources/boost/guidelines/;
- поштові шаблони в
resources/views/emails/ і resources/views/mail/.
Виняток для пошти цілком слушний: верстка листів тримається на таблицях та інлайнових стилях і болісно реагує на переформатування. Той, хто хоч раз ловив зіпсований лист у Outlook після «косметичної» правки, оцінить.
Решта релізу
Крім Blade, у 1.30.0 приїхали дрібніші зміни:
--diff тепер враховує перейменовані файли - фільтр змінили на --diff-filter=AMR;
--quiet більше не ковтає проблеми, а пише їх у stderr;
- у
pint.json зʼявився ключ in для налаштування тек.
Чи варто вмикати
Ламких змін немає: можливість опційна, і з вимкненим правилом Pint поводиться з .blade.php рівно так, як раніше - просто виключає їх зі свого пошуку файлів.
Якщо у вас уже налаштований Prettier для Blade, виграш - здебільшого в тому, що конфігурація й запуск стають одним інструментом замість двох. Якщо ж Blade у вас досі форматувався «як вийде», це хороший привід нарешті закрити питання - разом з порядком класів Tailwind у розмітці.
Перед першим запуском на великому проєкті варто зробити окремий коміт: форматування 200 шаблонів дасть diff, у якому загубиться будь-яка змістовна правка.