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

所以我有一个基本的快速项目设置,我使用这个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工作和自动重新编译? 我似乎无法具体find有关Express服务器的任何有用信息。

首先添加这个require声明:

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

然后下面的代码,在你的app.configure块中:

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

但是,我很抱歉地说node-sass库目前是无用的,因为scss文件中的@import不能正常工作,请参阅https://github.com / andrew / node-sass / issues / 27了解当前状态。

更新2013-10-22:显然,上面提到的问题似乎是根据@jonathanconway在下面的评论中解决…虽然仍然有一个没有回应的评论在这个问题上仍然有经验的人在2013-09-03

像joakimbeng说的,目前节点sass库有一个问题,@import是有点破了。

然而! 我find了一个解决方法, 你可以在这里看到 。

我所做的基本上是抓住原始的sass(在我的情况下,scss),并让节点sass为我呈现string。 但是,因为当前的工作目录是server.js文件所在的位置,所以你必须把url放在你的sass文件中,相对于你的server.js。 就我而言, 就像这样 。