答案 0 :(得分:16)
天哪,这些东西在路径的工作方式上非常不一致,但是我发现了如何让它发挥作用。
第一个问题是您的路径compiler
和staticProvider
,编译器需要使用/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编译器而不是主编译器。
答案 3 :(得分:0)
两个可以让您的生活更轻松的项目
答案 4 :(得分:0)
我发布了一个package on GitHub called node-kickstart-example,它使用了一个方便的预配置表达式,启用了jade模板渲染并减少了样式表处理。使用npm安装kickstart,将您的玉石模板放在views/
中,将较少的文件放在assets/styles/
中,然后您的好处就可以了......
Matt Sain用于生成压缩css文件的解决方案,包括kickstart。