Почему MinifyX не обновляет style.min.css после изменений в style.css
При использовании сниппета MinifyX в MODX Revolution многие сталкиваются с ситуацией: правки вносятся в исходный файл assets/css/style.css, но на сайте продолжают подгружаться старые стили из style.min.css. Очистка кеша не помогает. Разберём корень проблемы и способы её решения.
Как работает MinifyX по умолчанию
Сниппет MinifyX может работать в двух режимах: динамическая минификация на лету и статическая генерация минифицированных файлов. В вашем примере вызова:
[[MinifyX? &minifyCss=`1` &minifyJs=`1` ®isterCss=`default` &cssSources=`/assets/css/style.min.css`]]- параметр &cssSources явно указывает на готовый минифицированный файл. MinifyX в такой конфигурации не отслеживает изменения в style.css, а просто подключает указанный style.min.css. Поэтому все правки необходимо вносить непосредственно в style.min.css, что неудобно и чревато ошибками.
Правильная настройка для автоматической минификации
Чтобы MinifyX автоматически пересобирал минифицированную версию из исходника, нужно указывать в качестве источника исходный CSS-файл, а не уже сжатый. Пример корректного вызова:
[[MinifyX? &minifyCss=`1` &minifyJs=`1` ®isterCss=`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 вручную.