bjo*_*k24 6 sass node.js express
使用node(0.10.15)和express(3.3.4),以及最新的node-sass,我无法获取我的scss文件进行编译.我的app.js文件如下所示:
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, sass = require('node-sass');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
app.use(
sass.middleware({
src: __dirname + '/public/sass',
dest: __dirname + '/public',
debug: true,
outputStyle: 'compressed'
})
);
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)
为了自动编译,我缺少什么?
如果重要,我正在使用主管来监控变化.
中间件按照附加到应用程序的顺序执行.该node-sass中间件只编译scss文件css,它不为他们服务.该static中间件能够服务已编译css的文件,但是,它不能这样做,只要css文件尚未编译.如果你切换static和sass中间件,一切都应该按预期工作:
app.use(
sass.middleware({
src: __dirname + '/public/sass',
dest: __dirname + '/public',
debug: true,
outputStyle: 'compressed'
})
);
app.use(express.static(path.join(__dirname, 'public')));
Run Code Online (Sandbox Code Playgroud)
现在,当您请求时会发生以下情况/style.css:
sass注意到css文件请求.如果dest文件(__dirname + '/public' + '/style.css')是最新的,它什么都不做.否则,它会查找src文件(__dirname + '/public/sass' + '/style.scss')并编译它(如果存在).static注意到静态资产的请求.如果所请求的文件(path.join(__dirname, 'public') + '/style.css')确实存在,则将其提供.| 归档时间: |
|
| 查看次数: |
3247 次 |
| 最近记录: |