node-sass不能与node / express编译
我正在尝试使用express来获得node-sass,而我根本无法让它做任何编译。 这是我的app.js文件:
var express = require('express') , sass = require('node-sass') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path'); var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(sass.middleware({ src: __dirname + '/public/sass', dest: __dirname + '/public/stylesheets', debug: true })); 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.configure('development', function(){ 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')); });
我有public/sass
和public/stylesheets
,但不pipe什么.scss
文件我放在sass目录中没有任何东西正在编译。 还有什么我需要超越node app.js
运行?
我真的很接近放弃,只是安装sass gem,并保持打开额外的标签来观看目录。
它和Stylus中间件一样令人困惑(据说它受到启发)。
src
的文件夹结构应该模仿目的地的最终结构和你用来请求CSS文件的path。 如果你想让你的CSS文件像这样存储:
./public/stylesheets/app.css
而访问该文件的URL将是:
http://.../stylesheets/app.css
您需要像这样configuration中间件:
app.use(sass.middleware({ src: __dirname + '/public/sass', dest: __dirname + '/public', debug: true }));
和你的SASS文件夹结构是这样的:
./public/sass/stylesheets/app.scss
我相信这是这样的:
- 采取HTTP请求的path:
/stylesheets/app.css
- findSCSS文件,将URLpath连接到
src
并replace扩展名:./public/sass/stylesheets/app.scss
- 对于目标,将URLpath连接到
dest
:./public/stylesheets/app.css
我有类似的问题让节点sass中间件工作。 我最终放弃了,并试图资产架 ,我也无法工作,直到我开始使用这个叉: https : //github.com/techpines/asset-rack/pull/76
沮丧的资产架叉的拉要求已经坐了11个月,我最终只是写我自己的静态文件中间件称为电力支持萨斯等一些其他很好的function。
尝试使用前缀选项:
app.use(sass.middleware({ src: __dirname + '/public/sass', dest: __dirname + '/public', prefix: '/stylesheets' debug: true }));