在Express服务器上包含并自动编译Sass

时间:2012-12-13 08:09:37

标签: node.js express sass

所以我设置了一个基本的Express项目,并且我正在使用这个github项目https://github.com/andrew/node-sass,以便能够在节点之上使用Sass。这是我目前的app.js

var io = require('socket.io'),
    express = require('express'),
    path = require('path'),
    routes = require('./routes'),
    jquery = require('jquery');


/**
* Create app
*/

var app = express()
  , server = require('http').createServer(app)
  , io = io.listen(server);

/**
* Configure app
*/ 

app.configure(function(){ 
    app.set('port', 8080);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use(express.static(path.join(__dirname, 'public')));
});

我需要做些什么才能让Sass工作并自动重新编译?我似乎无法找到Express服务器的任何有用信息。

2 个答案:

答案 0 :(得分:16)

首先添加此require声明:

var sass = require("node-sass");

然后在app.configure块中添加以下代码:

...
app.use(sass.middleware({
    src: <your-sass-files-dir>,
    dest: path.join(__dirname, 'public'),
    debug: true
}));
...

但是我很遗憾地说,节点sass库目前非常无用,因为@import在您的{ {1}}文件无法按预期工作...请参阅https://github.com/andrew/node-sass/issues/27了解当前状态。

更新2013-10-22:显然上面提到的问题似乎是根据@jonathanconway在下面的评论中修复的......虽然还有unanswered comment on the issue from someone that still experiences the error at 2013-09-03 < / p>

答案 1 :(得分:0)

就像joakimbeng所说,目前node-sass库存在@import被破坏的问题。

然而!我找到了一个解决方法,you can see here

我所做的基本上是抓住原始sass(在我的情况下,scss),让node-sass为我渲染字符串。但是,因为当前工作目录是您的server.js文件所在的位置,所以相对于您的server.js,您将不得不将url放在sass文件中。就我而言,like this