2010-10-26 24 views
3

J'ai une petite application node.js (ma première) que je veux compiler c'est des feuilles de style less.js quand le serveur se charge. Le point que je commence à est l'application par exemple express pour jade où il apparaît qu'il compile est des modèles de SASS lorsque le serveur est créé:Quel est le meilleur moyen de rendre les stylesheets LESS.js dans node.js en utilisant express?

var pub = __dirname + '/public'; 

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

j'ai vu cela et espéré que ce serait aussi simple que de changer SASS à moins mais cela ne semble pas fonctionner.

Y a-t-il une approche différente que je devrais prendre? Y a-t-il quelque chose qui me manque? Je ne trouve nulle part la documentation sur la méthode .compile.

Merci!

Répondre

3

Vous compilez moins directement. Sass ne compile pas à moins en express. Il compile directement à CSS. Même chose avec moins. Il compile directement à CSS.

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

Hey Shripad, c'est exactement ce que je l'ai fait, mais il n'a pas compilé les fichiers CSS. Je suppose qu'il les mettrait dans le même répertoire, n'est-ce pas? – mattmcmanus

+0

Peut-être avez-vous une ancienne version d'Express. Je suggère de le cogner à 1.0.0.rc4 de n'importe quelle version que vous êtes. Assurez-vous de mettre à jour less.js. Et vérifiez également la version de node.js. Beaucoup de choses cassent avec 0.3.0. J'espère que vous n'êtes pas là-dessus! –

+2

BAH! Je l'ai compris. J'avais une importation dans ma feuille de style qui appelait un fichier moins au lieu d'un fichier CSS. Une fois que j'ai changé cela en .css tout a commencé à fonctionner. – mattmcmanus

3

Si vous voulez rapetisser le css en sortie, je trouve que le construit dans le compilateur (à partir du module de connexion) est manquant l'option de compression. Donc plutôt que d'écrire mon propre compilateur middleware pour cela. J'ai écrasé le compilateur moins connecté dans mon application.

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

Pour express 3, utilisez l'extrait suivant:

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