在 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 服务器的有用信息。

首先添加此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 文件中。就我而言,就像这样。

最新更新