Измененные LESS-файлы не перекомпилируются автоматически в настройках node / express / coffee - PullRequest
1 голос
/ 03 марта 2012

Наконец, получив LESS-компиляцию в приложении Node.js с экспресс-запуском на кофе, я столкнулся с проблемой, когда у меня, похоже, заканчиваются идеи:

Изменения в LESS-файлах не будут вызывать повторный рендеринг из LESS-компилятора, вызываемого express.

В моем основном файле app.coffee это можно найти (в таком порядке)

app.use exp.compiler { src: __dirname + '/public', dest: __dirname + '/public', enable: ['less'] }
app.use exp.methodOverride()
app.use exp.bodyParser()
app.use exp.cookieParser()
app.use exp.static __dirname + '/public'

После этого добавляется сессия и промежуточное программное обеспечение.

Проблема с перекомпиляцией файлов .less в .css при запросе сохраняется после перезапуска приложения.

Я попытался поменять строки exp.compiler и exp.static, но это ничего не изменило, кроме того, что происходит с первым клиентским запросом (короче говоря, файл CSS отображается, но не доставляется).

Удаление файла .css, очевидно, приведет к тому, что код перекомпилирует .less в .css, но я не представлял себе такой компилятор. Есть ли что-нибудь еще, что я могу сделать?

Ответы [ 2 ]

1 голос
/ 30 мая 2012
// Environment Respective Less Watch Script
if (app.settings.env === 'development') {
  var stylesheets = fs.readdirSync(path.join(__dirname, 'views', 'stylesheets')).filter(function(f) {
    return f.match(/\.less$/);
  });
  stylesheets.forEach(function(f) {
    fs.watchFile(path.join(__dirname, 'views', 'stylesheets', '/' + f), function(c, p) {
      if (c.mtime.getTime() !== p.mtime.getTime()) {
        // Remove the existing CSS file
        fs.unlinkSync(path.join(__dirname, 'public', 'stylesheets', 'bootstrap.css'));
        console.log(' Successfully removed existing stylesheet for recompiling');
      }
    });
  });
}
0 голосов
/ 17 марта 2012

Исследования показывают, что в данный момент никакой флаг -watch не работает с компиляторами в выражениях или lessc.Таким образом, перекомпиляция внутри Express работает, только если css-файлы предварительно удалены вручную.

...