Каков наилучший способ рендеринга таблиц стилей LESS.js в node.js с помощью Express? - PullRequest
3 голосов
/ 27 октября 2010

У меня есть небольшое приложение node.js (мое первое), которое я хочу компилировать - это таблицы стилей less.js при загрузке сервера.Я начинаю с примера приложения-экспресса для jade, где, по-видимому, он компилирует шаблоны SASS при создании сервера:

var pub = __dirname + '/public';

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

Я видел это и надеялся, что это будет так же просто, как изменить sassменьше, но это не похоже на работу.

Есть ли другой подход, который я должен использовать?Я что-то упускаю?Я не могу найти документацию по методу .compile.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 05 декабря 2011

Если вы хотите минимизировать выводимый css, я обнаружил, что во встроенном компиляторе (из модуля connect) отсутствует опция сжатия. Так что вместо того, чтобы писать свой собственный компилятор промежуточного программного обеспечения для него. Я переписал компилятор без подключения в моем приложении.

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'] }));
3 голосов
/ 27 октября 2010

Вы должны компилировать меньше напрямую.Sass не компилируется с меньшим в экспрессе.Он компилируется непосредственно в CSS.То же самое с меньшим.Компилируется непосредственно в CSS.

var app = express.createServer(
  express.compiler({ src: pub, enable: ['less'] }),
  express.staticProvider(pub)
);
1 голос
/ 07 декабря 2012

Для экспресс-3 используйте следующий фрагмент:

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