Qual è il modo migliore per rendere meno fogli di stile in node.js usando Express?
Domanda
Ho una piccola app Node.js (la mia prima) che voglio compilare è meno fogli di stile quando il server si carica. Il punto a cui sto iniziando è l'app Express Exex per Jade in cui sembra compila i suoi modelli Sass quando viene creato il server:
var pub = __dirname + '/public';
var app = express.createServer(
express.compiler({ src: pub, enable: ['sass'] }),
express.staticProvider(pub)
);
Ho visto questo e speravo che sarebbe stato semplice come cambiare Sass a meno, ma ciò non sembra funzionare.
C'è un approccio diverso che dovrei adottare? C'è qualcosa che mi manca? Non riesco a trovare la documentazione sul metodo .comipile ovunque.
Grazie!
Soluzione
Devi compilare meno direttamente. SASS non si compila a meno in espresso. Compila direttamente su CSS. Lo stesso con meno. Compila direttamente su CSS.
var app = express.createServer(
express.compiler({ src: pub, enable: ['less'] }),
express.staticProvider(pub)
);
Altri suggerimenti
Se si desidera minimizzare il CSS output, ho scoperto che il compilatore integrato (dal modulo Connect) mancava l'opzione Compress. Quindi, piuttosto che scrivere il mio compilatore di middleware per questo. Ho sovrascritto il compilatore Connect Meno nella mia app.
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'] }));
Per Express 3, usa il seguente frammento:
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);
});
});