¿Cuál es la mejor manera de representar menos.js hojas de estilo en node.js usando express?

StackOverflow https://stackoverflow.com/questions/4028569

  •  26-09-2019
  •  | 
  •  

Pregunta

Tengo una pequeña aplicación Node.js (la primera) de que quiero compilarlo es menos. Js Styles house cuando se carga el servidor. El punto en el que estoy comenzando es la aplicación Express Ejemplo para Jade, donde parece que compila sus plantillas SASS cuando se crea el servidor:

var pub = __dirname + '/public';

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

Vi esto y esperaba que fuera tan simple como cambiar a Sass a menos, pero eso no parece funcionar.

¿Hay un enfoque diferente que deba adoptar? ¿Se me escapa algo? No puedo encontrar la documentación en el método .compile en cualquier lugar.

¡Gracias!

¿Fue útil?

Solución

Tienes que compilar menos directamente. Sass no se compila menos en Express. Se compila directamente con CSS. Lo mismo con menos. Se compila directamente con CSS.

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

Otros consejos

Si desea minificar el CSS de salida, descubrí que al compilador incorporado (desde el módulo de conexión) le faltaba la opción de compresa. Entonces, en lugar de escribir mi propio compilador de middleware para ello. Sobrescribí el compilador Connect Less en mi aplicación.

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

Para Express 3, use el siguiente fragmento:

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);
  });
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top