所以我设置了一个基本的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 服务器的有用信息。
首先添加此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 库目前非常无用,因为@import
在您的scss
文件中无法正常工作......有关当前状态,请参阅 https://github.com/andrew/node-sass/issues/27。
更新2013-10-22:显然,根据下面评论中的@jonathanconway,上述问题似乎已得到解决...尽管仍然有人在2013-09-03遇到错误时对此问题仍有未回答的评论
就像joakimbeng说的,目前node-sass库有一个问题,即@import
有点坏了。
然而!我找到了一个解决方法,您可以在此处看到。
我所做的基本上是抓取原始的sass(在我的例子中,scss),并让node-sass为我渲染字符串。但是,由于它的当前工作目录是服务器.js文件所在的位置,因此相对于服务器.js,您必须将 url 放在 sass 文件中。就我而言,就像这样。