Qual é a melhor maneira de renderizar menos.js folhas de estilo no node.js usando o Express?

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

  •  26-09-2019
  •  | 
  •  

Pergunta

Eu tenho um pequeno aplicativo Node.js (meu primeiro) que quero compilar, é menos.js folhas de estilo quando o servidor carrega. O ponto em que estou começando é o aplicativo Express Exemplo para Jade, onde parece que ele compila seus modelos SASS quando o servidor é criado:

var pub = __dirname + '/public';

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

Eu vi isso e esperava que fosse tão simples quanto mudar de SASS para menos, mas isso não parece funcionar.

Existe uma abordagem diferente que devo adotar? Tem algo que estou perdendo? Não consigo encontrar a documentação sobre o método .compile em qualquer lugar.

Obrigado!

Foi útil?

Solução

Você precisa compilar menos diretamente. SASS não compila com menos em expresso. Ele compila diretamente ao CSS. Mesmo com menos. Ele compila diretamente ao CSS.

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

Outras dicas

Se você deseja minimizar o CSS em saída, descobri que o compilador embutido (do módulo Connect) estava ausente da opção de compressa. Então, em vez de escrever meu próprio compilador de middleware para ele. Eu substituo o CONNECT LESS COMPILADOR NA MEU 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'] }));

Para o Express 3, use o seguinte snippet:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top