3

我有一个小的 node.js 应用程序(我的第一个),我想在服务器加载时编译它的 less.js 样式表。我要开始的一点是翡翠的快速示例应用程序,它在创建服务器时编译它的 SASS 模板:

var pub = __dirname + '/public';

var app = express.createServer(
  express.compiler({ src: pub, enable: ['sass'] }),
  express.staticProvider(pub)
);

我看到了这一点,并希望它就像将 sass 更改为 less 一样简单,但这似乎不起作用。

我应该采取不同的方法吗?有什么我想念的吗?我在任何地方都找不到关于 .compile 方法的文档。

谢谢!

4

3 回答 3

3

你必须直接编译 less。Sass 不会在 express 中编译成 less。它直接编译成css。少也一样。它直接编译成css。

var app = express.createServer(
  express.compiler({ src: pub, enable: ['less'] }),
  express.staticProvider(pub)
);
于 2010-10-27T07:48:46.553 回答
3

如果您想缩小输出的 css,我发现内置编译器(来自连接模块)缺少 compress 选项。因此,与其为它编写我自己的中间件编译器。我在我的应用程序中覆盖了 connect less 编译器。

var express = require('express');
var app = express.createServer();
var less;

express.compiler.compilers.less.compile = function (str, fn) {
    if (!less) less = require("less");                                                      
    try {
        less.render(str, { compress : true }, fn);
    } catch (err) {
        fn(err);
    }
};

app.use(express.compiler({ src: publicdir, enable: ['less'] }));
于 2011-12-04T23:53:11.950 回答
1

对于 express 3,使用以下代码段:

var express = require('express'),
    less = require('less');

var app = express();
app.engine('less', function (path, options, callback) {
  fs.readFile(path, 'utf8', function (error, contents) {
    if (error) return callback(error);
    less.render(contents, options, callback);
  });
});
于 2012-12-07T15:11:48.987 回答