Почему MinifyX не обновляет style.min.css после изменений в style.css

    При использовании сниппета MinifyX в MODX Revolution многие сталкиваются с ситуацией: правки вносятся в исходный файл assets/css/style.css, но на сайте продолжают подгружаться старые стили из style.min.css. Очистка кеша не помогает. Разберём корень проблемы и способы её решения.

    Как работает MinifyX по умолчанию

    Сниппет MinifyX может работать в двух режимах: динамическая минификация на лету и статическая генерация минифицированных файлов. В вашем примере вызова:

    [[MinifyX? &minifyCss=`1` &minifyJs=`1` &registerCss=`default` &cssSources=`/assets/css/style.min.css`]]

    - параметр &cssSources явно указывает на готовый минифицированный файл. MinifyX в такой конфигурации не отслеживает изменения в style.css, а просто подключает указанный style.min.css. Поэтому все правки необходимо вносить непосредственно в style.min.css, что неудобно и чревато ошибками.

    Правильная настройка для автоматической минификации

    Чтобы MinifyX автоматически пересобирал минифицированную версию из исходника, нужно указывать в качестве источника исходный CSS-файл, а не уже сжатый. Пример корректного вызова:

    [[MinifyX? &minifyCss=`1` &minifyJs=`1` &registerCss=`default` &cssSources=`/assets/css/style.css`]]

    В этом случае при каждом запросе страницы MinifyX будет брать style.css, минифицировать его на лету и отдавать результат. Однако такой подход увеличивает нагрузку на сервер. Более эффективный способ - настроить статическую генерацию.

    Настройка статической генерации (рекомендуется)

    Установите и настройте компонент pdoTools (часто идёт в паре с MinifyX). В системных настройках MODX найдите параметры:

    • minifyx_assets_path - путь для сохранения сгенерированных файлов (например, /assets/minified/)
    • minifyx_assets_url - URL до этой папки

    После этого в вызове сниппета укажите исходный CSS:

    [[MinifyX? &minifyCss=`1` &cssSources=`/assets/css/style.css` &forceUpdate=`0`]]

    Параметр &forceUpdate=`0` (или его отсутствие) означает, что MinifyX будет генерировать статический файл один раз, а затем использовать его до тех пор, пока не изменится дата модификации исходника. При каждом сохранении style.css через админку или FTP MinifyX автоматически обнаружит новую версию и пересоздаст минифицированный файл.

    Что делать, если автоматическое обновление не срабатывает

    Проверьте следующие моменты:

    • Права на запись - папка для сгенерированных файлов должна быть доступна для записи веб-сервером.
    • Кеш MODX - после изменения исходного CSS очистите системный кеш (Система → Очистить кеш).
    • Версия MinifyX - убедитесь, что используется актуальная версия (рекомендуется 2.x+).
    • Плагин minifyX - проверьте, активен ли плагин, отвечающий за перехват событий обновления файлов.

    Если после всех настроек проблема осталась, попробуйте временно включить &forceUpdate=`1` - это принудительно будет генерировать файл при каждом запросе (только для отладки, на продакшене не используйте).

    Альтернативный подход: использовать сборщик на Node.js

    Для больших проектов удобнее вынести минификацию за пределы CMS - с помощью Gulp, Webpack или Vite. Исходные стили хранятся в src/css/, а сборщик генерирует готовый style.min.css в нужную папку. MinifyX тогда просто подключает готовый файл. Этот подход даёт полный контроль над процессом и не нагружает сервер.

    Заключение

    Основная ошибка - указание в параметре cssSources уже минифицированного файла. Чтобы MinifyX автоматически обновлял style.min.css при правках в style.css, необходимо:

    • Указывать в качестве источника исходный CSS-файл.
    • Настроить статическую генерацию через pdoTools.
    • Проверить права на запись и версию компонента.

    После этих действий при каждом сохранении style.css минифицированная версия будет обновляться автоматически, и вам не придётся править style.min.css вручную.

    Часто задаваемые вопросы