express.js less编译器:无法获得工作

WHI*_*LOR 5 less node.js express

app.js:

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

在我的玉视图中:

link(rel="stylesheet", type="text/css", href='/app/stylesheets/app.less)
Run Code Online (Sandbox Code Playgroud)

我的文件较少:public/app/stylesheets/app.less

当我请求页面时,我有html头:

<link href="/app/stylesheets/app.less" type="text/css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

并在服务器控制台中注意到.

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

2)如果一切正确:应该链接在htm中

<link href="/app/stylesheets/**app.less**" ... >
Run Code Online (Sandbox Code Playgroud)

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

<link href="/app/stylesheets/**app.css**" ... >
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 12

根据TJ Holowaychuck(Connect&Express的创建者)的说法,似乎编译器()已从连接中删除,它将不再受支持.

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


更新2013-01-16

从Express 3.0.0开始,框架现在包含less-middleware而不是compiler以前在Connect 中的中间件.它的工作方式与旧的中间件大致相同.

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

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

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

link(rel='stylesheet', type='text/css', href='css/styles.css')
Run Code Online (Sandbox Code Playgroud)

您的目录结构将如下所示:

myapp
+-public
  +-css
    +-styles.less
Run Code Online (Sandbox Code Playgroud)

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

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


Ran*_*ndy 5

你可以通过中间件获得LESS编译,就像Stylus目前的工作方式一样.

编辑:不是试图将[pull request] [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'));
});
Run Code Online (Sandbox Code Playgroud)

在您的jade文件中,您应该能够使用对css文件的引用:

link(rel="stylesheet", type='text/css', href='/app/stylesheets/app.css')
Run Code Online (Sandbox Code Playgroud)