• Блог
  • [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 файлы.

    С Новым годом!

    Друзья! От всей души поздравляю всех вас с наступающим Новым годом! Хочу пожелать всем счастья, удачи, успехов на всех фронтах и и благополучия! До встречи в Новом году!

    30 декабря 2018, 23:04   95     0

    Комментарии ()

      Вы должны авторизоваться, чтобы оставлять комментарии.

      Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.