时间:2011-01-06 18:18:42

标签: javascript node.js express less

5 个答案:

答案 0 :(得分:16)

天哪,这些东西在路径的工作方式上非常不一致,但是我发现了如何让它发挥作用。

第一个问题是您的路径compilerstaticProvider,编译器需要使用/public并且会挂钩到下面的所有请求。如果不这样做,编译器将尝试使用类似/public/stylo/stylo的路径。

第二个问题在于@import文件中的main.less以及较少的编译器是愚蠢的并且不处理相对导入的事实。

@import "/public/stylo/goodies.css";中使用main.less可以使其正常运行。

针对less的相对路径问题提交了一个Bug:
https://github.com/cloudhead/less.js/issues/issue/177

答案 1 :(得分:3)

如果你想缩小输出的css,我发现内置的编译器(来自connect模块)缺少compress选项。因此,而不是为它编写我自己的中间件编译器。我在我的app中覆盖了less 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'] }));

答案 2 :(得分:1)

问题是编译器只在文件更改时才编译文件。

让我们说:

// A.less
@import "B.css";

// B.less
body {
  background: #f00;
}

我现在修改B.less,A不会被重新编译!

我有一个拉请求等待几个月,你可以使用我的fork编译器而不是主编译器。

https://github.com/senchalabs/connect/pull/167

答案 3 :(得分:0)

答案 4 :(得分:0)

我发布了一个package on GitHub called node-kickstart-example,它使用了一个方便的预配置表达式,启用了jade模板渲染并减少了样式表处理。使用npm安装kickstart,将您的玉石模板放在views/中,将较少的文件放在assets/styles/中,然后您的好处就可以了......

Matt Sain用于生成压缩css文件的解决方案,包括kickstart