2010-10-26 83 views
3

我有一個小的node.js應用程序(我的第一個),我想在服務器加載時編譯less.js樣式表。我開始在該點是玉快遞示例應用程序在其中顯示它編譯它SASS模板的服務器在創建時:使用express在node.js中呈現LESS.js樣式表的最佳方式是什麼?

var pub = __dirname + '/public'; 

var app = express.createServer(
    express.compiler({ src: pub, enable: ['sass'] }), 
    express.staticProvider(pub) 
); 

我看到了這一點,並希望這將是爲改變青菜少一樣簡單但這似乎並不奏效。

我應該採取不同的方法嗎?有什麼我失蹤?我無法在任何地方找到.compile方法的文檔。

謝謝!

回答

3

你不必直接編譯。 Sass不會以快速編譯。它直接編譯爲CSS。 與此相同。它直接編譯爲CSS。

var app = express.createServer(
    express.compiler({ src: pub, enable: ['less'] }), 
    express.staticProvider(pub) 
); 
+0

嘿Shripad,這正是我所做的,但它並沒有編譯任何CSS文件。我假設它會把它們放在同一個目錄中,對嗎? – mattmcmanus 2010-10-27 14:40:33

+0

也許你有一箇舊版本的Express。我建議你從任何版本上將它碰到1.0.0.rc4。確保更新less.js.並檢查你的node.js版本。許多事情與0.3.0打破。希望你不是那個! – 2010-10-27 17:58:42

+2

BAH!我想到了。我在我的樣式表中導入了一個調用較少文件而不是CSS文件的導入。一旦我改變.css一切開始工作。 – mattmcmanus 2010-10-27 20:56:00

3

如果你想縮小輸出的CSS,我發現內置的編譯器(從連接模塊)缺少壓縮選項。所以,而不是爲它編寫我自己的中間件編譯器。我在我的應用程序中覆蓋了連接少的編譯器。

var express = require('express'); 
var app = express.createServer(); 
var less; 

express.compiler.compilers.less.compile = function (str, fn) { 
    if (!less) less = require("less");              
    try { 
     less.render(str, { compress : true }, fn); 
    } catch (err) { 
     fn(err); 
    } 
}; 

app.use(express.compiler({ src: publicdir, enable: ['less'] })); 
1

對於快遞3,使用下面的代碼片段:

var express = require('express'), 
    less = require('less'); 

var app = express(); 
app.engine('less', function (path, options, callback) { 
    fs.readFile(path, 'utf8', function (error, contents) { 
    if (error) return callback(error); 
    less.render(contents, options, callback); 
    }); 
}); 
相關問題