[MinifyX] Обновление библиотек
Основной причиной выпуска данной версии стало исправление бага с calc()
в библиотеке обработки css (жаль что до vmin и vmax у них руки не дошли). А так как многие жаловались на это, я решил не откладывать обновление в долгий ящик и сделать приятное к празднику. Собирать пакет только ради одного багфикса не хотелось, поэтому я добавил ещё пару фич —
- Минификация контекста.
- Использование версии для скриптов и стилей, чтобы обойти кэш браузера.
- Функция
minify()
для работы в php коде.
Первая фича включается соответствующей системной настройкой. Честно говоря, не знаю, зачем это нужно, но в сообществе с определённой периодичностью встаёт данный вопрос. Вот теперь такая возможность есть.
Вторая фича пригодится в том случае, если скомпилированный файл имеет постоянное имя. Как вы понимаете, для файла с хешем в имени кэш браузера не страшен. Как это работает? У сниппета нужно указать параметр «version», в который передать соответствующее значение. Например,
В результате получится такой код:
<link rel="stylesheet" href="/assets/components/minifyx/cache/styles.css?v=1.2.3">
Кроме того, если указать значение «auto», то версия будет генериться автоматически в виде 6-тизначного хеша.
Про функцию minify()
чуть подробнее. Она предназначена, в первую очередь, для работы с файлами стилей и скриптов в коде php. Например, в консоли в админке. Т.е. собрать и минифицировать файлы можно вручную не нагружая пользователя. Как это работает? Берём modalConsole и кодим.
// Выводим относительный путь к файлу echo minify([ 'cssSources' => 'url/to/css/file1.css,url/to/css/file2.css', 'minifyCss' => true, 'minifyJs' => true, 'hooks' => 'fixVm.php', 'cssFilename' => 'styles.min.css', ]);
В функцию передаётся массив параметров как при вызове сниппета. Но есть ещё вариант — параметры передавать в качестве методов в цепочке.
// Выводим относительный путь к файлу echo minify([ 'cssSources' => 'url/to/css/file1.css,url/to/css/file2.css', ]) ->minify() // выставляет параметры минификации css и js ->cacheFolder('/assets/css/') // переназначает папку хранения скомпилированных файлов ->hooks('fixVm.php') // исправляем проблему с vmin и vmax ->cssFilename('styles.min.css') ->run();
Обратите внимание, что если вы выводите функцию через echo
или print
, то результат магически приводится к строке. Если же нужно присвоить результат в переменную, то заканчивать цепочку надо методом run()
. Лучше всегда использовать последний вариант и принудительно запускать обработку.
И ещё вместо двух параметров «minifyCss» и «minifyJs» можно использовать один метод minify()
.
Метод cacheFolder
позволяет указать папку, в которую будут помещены скомпилированные файлы. Если не указать, то они будут помещены в папку, указанную в системной настройке «minifyx_cacheFolder».
Ну и вставляем ссылку на указанный файл в шаблоне (только один раз естественно)
<link rel="stylesheet" href="/assets/css/styles.min.css">
Получается такой своеобразный php-шный webpack. Думаю, такой альтернативный вариант использования MinifyX не будет лишним. Пригодится, например, собирать sass и less файлы.
С Новым годом!
Друзья! От всей души поздравляю всех вас с наступающим Новым годом! Хочу пожелать всем счастья, удачи, успехов на всех фронтах и благополучия! До встречи в Новом году!

Комментарии ()
Вы должны авторизоваться, чтобы оставлять комментарии.
Подскажи почему в плагине MinifyX нет открывающего тега <?php, а если его добавить и сохранить, то он удаляется?:(
Создал вот здесь тему.
то условие не срабатывает, и тег не добавляется. Вот такая миленькая бага.
Самое простое решение — прямо в плагине разбить строку '<?php' на две — '<'. '?php'.
К примеру класс .row в bootstrap5:
И вот что возвращает после минификации Minify: