lessphp: также смотреть импортированные файлы

Всегда раздражающая проблема, с которой я столкнулся с lessphp (а также с меньшей компиляцией в rails или python/django), заключается в том, что он отслеживает только файл, который нужно скомпилировать, но НЕ импортированные файлы.

Например, моя структура less выглядит примерно так:

// main.less 
// (compiled to styles.css)
@import "variables"
@import "objects"
@import "theme"

.

// theme.less 
// (actual styles)
body { background:#efefef }

Таким образом, фактически скомпилированный файл — это только корень для импорта стилей и файлов, над которыми я работаю. Каждый раз, когда я вношу изменения в свои стили (theme.less), мне приходится редактировать main.less, чтобы он перекомпилировался.

Есть ли возможность проверить ВСЕ файлы на наличие изменений, как это делается при компиляции на стороне клиента (less.js)?


person bench-o    schedule 16.10.2014    source источник


Ответы (1)


Когда вы проверяете исходный код компилятора php lessc, который можно найти по адресу https://raw.githubusercontent.com/oyejorge/less.php/master/bin/lessc, вы обнаружите, что скрипт оценивает только время модификации файла Less, который вы передали в качестве аргумента.

Когда у вас меньше файлов в /home/project/less, вы можете добавить, например, следующий код внутри цикла while(1) в bin/less, около строки 125:

while (1) {
    clearstatcache();
//keep original code here
$dir = '/home/project/less';
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    if(preg_match('/\.less$/',$filename) && filemtime($filename) > $lastAction)
    {
       $updated = true;
       break;
    }
}
if($updated) break;
}
person Bass Jobsen    schedule 17.10.2014