2012-12-13 103 views
9

因此,我有一個基本的Express項目設置,並且我正在使用此github項目https://github.com/andrew/node-sass,以便能夠在節點頂部使用Sass。這是我目前app.js在Express服務器上包括並自動編譯Sass

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'))); 
}); 

什麼我需要做的就是無禮的工作和自動重新編譯?我似乎無法專門爲Express服務器找到任何有用的信息。

+0

我只會使用這種方法,如果它實際上是在應用程序運行之前預編譯您的樣式。如果不這樣做,我會避免使用此解決方案。 – Oddman

回答

16

首先添加此require聲明:

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

然後將下面的代碼,在您的app.configure塊:

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

我很抱歉地說,節點薩斯庫目前相當無用,因爲@importscss文件不能正常工作,因爲它應該是...有關當前狀態,請參閱https://github.com/andrew/node-sass/issues/27

更新2013年10月22日:顯然,上述問題似乎按照下面的評論@jonathanconway固定......雖然還是有一個unanswered comment on the issue from someone that still experiences the error at 2013-09-03

+0

所以我應該使用LESS或Stylus? –

+3

就我個人而言,我更喜歡使用SCASS語法的SASS來處理LESS和Stylus,這主要是因爲這個偉大的框架http://inuitcss.com/。 所以我會建議繼續使用SASS,但是用ruby-gem sass編譯它。這就是我要做的,直到節點薩斯,或另一個包會得到足夠好的... – joakimbeng

+0

真棒,謝謝! –

0

像joakimbeng說,目前該節點薩斯圖書館有一個問題,其中@import是有點破碎。

但是!我找到了一個解決方法,其中you can see here

我所做的基本上是抓住原始的sass(在我的情況下,scss),並讓node-sass爲我呈現字符串。但是,因爲它是當前工作目錄是你的server.js文件所在的位置,所以你將不得不將URL放在你的sass文件中,相對於你的server.js。在我的情況下,like this