Короткая версия
При использовании файловых компрессоров, таких как YUI-компрессор, какова правильная процедура развертывания вашего веб-сайта, чтобы вам не приходилось связываться со сжатыми файлами во время разработки?Должен ли быть сценарий сжатия как часть процесса выпуска?
Длинная версия
Я только что присоединился к проекту, где мы используем компрессор YUI для наших файлов JS и CSS.Я столкнулся с некоторыми кусками кода, которые мне казались очень плохо пахнут.Мне интересно, есть ли лучший способ сделать это.
Я думаю, что при работе над кодом разработчики должны иметь возможность работать с несжатыми файлами, и веб-сайт должен работать и отражать свои изменениякак они идут.Затем измененные файлы CSS и JS могут быть сжаты во время выпуска.Это не совсем так.
По сути, на наших основных страницах php проверяется PHP_SAPI и, если это командная строка, запускаются компрессоры.Это состоит из запуска exec
на git log
, а затем некоторого волшебства sed
для получения номера текущей ревизии (который будет использоваться как версия файла css и js), затем proc_open
с помощью yuicompressor, запустите его нафайлы, еще несколько exec
s, чтобы добавить новые файлы в git ... и затем какой-то вуду заходит в сам файл php (да, он самоизменяется) и изменяет объявление переменной $version
на новый номер ревизии.,Эта переменная используется для include
правильных файлов CSS и JS.
Когда я впервые проверил код из нашего репо, веб-сайт работал локально, но CSS не было.Коллега сказал мне, что мне нужно запустить скрипт оболочки, который вызвал заклинание выше.Потребовалось около получаса для настройки прав доступа к файлу, прежде чем это удалось.
Это пахнет так же плохо, как я думаю?Как мы можем избавиться от этого как на этапе разработки и иметь возможность просто включать обычные несжатые файлы во время разработки?Сейчас я не могу внести изменения в указанные файлы и сразу же их увидеть.Проблема с выполнением этого во время выпуска заключается в том, что включаемые файлы должны быть изменены на сжатые файлы во время сжатия файлов.Похоже, что для этого потребуются также скрипты, которые модифицируют код.Есть идеи?