express.jsless编译器:无法工作

app.js:

app.use(express.compiler({ src: __dirname + '/public', enable: ['less']})); app.use(express.static(__dirname + '/public')); 

在我的玉石看来:

 link(rel="stylesheet", type="text/css", href='/app/stylesheets/app.less) 

我有更less的文件:public / app / stylesheets / app.less

当我请求我在html头部的页面时:

 <link href="/app/stylesheets/app.less" type="text/css" rel="stylesheet"> 

并注意到在服务器控制台。

1)那么为什么expression式甚至不会尝试编译app.less? 应该是?

2)如果一切正确:应链接在HTM是

 <link href="/app/stylesheets/**app.less**" ... > 

或者表示应该在渲染时更改文件的扩展名?

 <link href="/app/stylesheets/**app.css**" ... > 

据TJ Holowaychuck(Connect&Express的创build者)说,编译器()似乎已经从连接中移除了,并且不再被支持。

https://github.com/visionmedia/express/issues/877


更新2013-01-16

从Express 3.0.0开始,框架现在包含了less-middleware而不是以前用于连接的compiler中间件。 它和旧的中间件很像。

要将其添加到现有项目,请将less-middleware添加到package.json ,然后运行npm install然后将以下内容添加到您的configuration中:

 app.use(require('less-middleware')({ src: __dirname + '/public' })); app.use(express.static(path.join(__dirname, 'public'))); 

在您的Jade模板中,您将其引用为普通的CSS文件:

 link(rel='stylesheet', type='text/css', href='css/styles.css') 

你的目录结构如下所示:

 myapp +-public +-css +-styles.less 

less-middleware将查找与请求的.css文件名称相同的.less文件。 如果find一个,它将编译它并服务器生成的CSS。

您可能想要从源代码pipe理中排除已编译的CSS文件。 如果你使用Git,你可以添加.css到你的.gitignore文件。

您可以通过中间件使LESS编译工作,就像Stylus目前的工作方式一样。

编辑:而不是试图将[拉请求] [0]到主LESS存储库,它决定做一个单独的包。

以下是您可以如何使用LESS.js中间件 :

 var lessMiddleware = require('less-middleware'); var app = express.createServer(); app.configure(function () { // Other configuration here... app.use(lessMiddleware({ src: __dirname + '/public', compress: true })); app.use(express.static(__dirname + '/public')); }); 

在你的jade文件中,你应该可以使用对css文件的引用:

 link(rel="stylesheet", type='text/css', href='/app/stylesheets/app.css')