Was ist der beste Weg, um weniger.js Stylesheets in Node.js mit Express zu rendern?

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

  •  26-09-2019
  •  | 
  •  

Frage

Ich habe eine kleine node.js -App (meine erste), die ich mit weniger.JS -Stylesheets kompilieren möchte, wenn der Server geladen wird. Der Punkt, an dem ich anfange, ist die Express -Beispiel -App für Jade, an der es angezeigt wird, dass es seine Sass -Vorlagen erstellt, wenn der Server erstellt wird:

var pub = __dirname + '/public';

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

Ich habe das gesehen und gehofft, es wäre so einfach wie das Wechseln von Sass in weniger, aber das scheint nicht zu funktionieren.

Gibt es einen anderen Ansatz, den ich wählen sollte? Fehlt mir etwas? Ich kann die Dokumentation auf der. Compile -Methode nirgendwo finden.

Vielen Dank!

War es hilfreich?

Lösung

Sie müssen weniger direkt kompilieren. Sass ist nicht zu weniger in Express zusammengestellt. Es kompiliert direkt zu CSS. Gleiches gilt mit weniger. Es kompiliert direkt zu CSS.

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

Andere Tipps

Wenn Sie das ausgegebene CSS minifieren möchten, fand ich fest, dass der integrierte Compiler (aus dem Verbindungsmodul) die Kompressoption fehlte. Also, anstatt meinen eigenen Middleware -Compiler dafür zu schreiben. Ich habe den Connect weniger Compiler in meiner App überschrieben.

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

Verwenden Sie für Express 3 den folgenden 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);
  });
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top