更改了LESS文件,而不是在节点/快速/咖啡设置中自动重新编译

时间:2012-03-02 21:56:19

标签: node.js coffeescript express less

最后通过快速运行咖啡将LESS编译到Node.js应用程序之后,我遇到了一个问题,我似乎没有想法:

对LESS文件的更改不会调用来自快递调用的LESS编译器的重新呈现。

在我的主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.compilerexp.static行,但除了第一个客户端请求发生的情况之外没有任何改变(简而言之,css文件已呈现但未传递)。

删除.css文件显然会得到将.less重新编译为.css的代码,但这不是我想象的那样的编译器。还有什么我可以做的吗?

2 个答案:

答案 0 :(得分:1)

// 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');
      }
    });
  });
}

答案 1 :(得分:0)

研究显示,目前,没有-watch - flag可以与express或lessc内的编译器一起使用。所以重新编译内部express只有在事先手动删除css-Files时才有效。