Node.js - express - jade - скомпилировать SASS/LESS
У кого-нибудь есть действительно новичок в руководстве nodejs-express - SASS/LESS? Мне это не удалось. Пример, который у меня есть сейчас, является как можно более простым.
var express = require('express'),
less = require('less'),
app = express.createServer();
var pub_dir = __dirname + '/public';
app.configure(function(){
app.use(express.compiler({ src: pub_dir, enable: ['less'] }));
app.use(express.staticProvider( pub_dir ));
};
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
Файл style.css.less
находится в pub_dir
, я могу получить доступ к нему напрямую, а стиль
@brand_color: #4D926F;
body {
color: @brand_color;
}
Насколько я понимаю, компиляция должна произойти при запуске, а файл css будет сгенерирован в src
-dir, так как dest не указан.
Мой сервер работает нормально, но независимо от того, сколько способов я пытался испортить с помощью dirnames, каталогов и имен файлов LESS/SASS (и их соответствующего содержимого LESS/SASS), я не могу заставить это работать. Штопать! Справка.
Ответы
Ответ 1
Я тоже новичок, пытающийся получить эту настройку. Я пробовал несколько фрагментов, которые я нашел, пока наконец не заметил, что у экспресс есть команда "экспресс", которая устанавливает новый проект.
Попробуйте express -c less
создать образец проекта с LESS как механизм CSS.
Это должно создать необходимые каталоги. Новые файлы css будут обслуживаться из вашего статического каталога.
Конфигурация:
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');
app.use(express.bodyDecoder());
app.use(express.methodOverride());
app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] }));
app.use(app.router);
app.use(express.staticProvider(__dirname + '/public'));
});
Ответ 2
Ваша настройка - стандартная настройка для readymade. Убедитесь, что в вашей системе установлено меньше компилятора.
npm install lessjs readymade
Затем добавьте следующее на ваш сервер. js
app.use(require('readymade').middleware({root: "public"}));
Ответ 3
Здесь аналогичный вопрос:
Node.js + Express.js. Как RENDER меньше css?
вы также можете просмотреть руководство по Экспресс-сайт
Ответ 4
Два проекта, которые могли бы облегчить вам жизнь
Ответ 5
Я работаю над express 4.x и использую SASS. Вот фрагмент, который я использую для стилей (помните комментарии):
var express = require('express'),
// ... other packages
sass = require('node-sass');
// ...
var app = express();
// ...
// Commented this default express generator line:
// app.use(require('stylus').middleware(path.join(__dirname, 'public')));
//
// Because of some bug the node-sass (http://git.io/eItWzA) does not scan the correct folders,
// so I have both .scss and final .css in one /public/css/ folder
app.use(
sass.middleware({
src: __dirname + '/public/', // where the sass files are
dest: __dirname + '/public/', // where css should go
})
);
// ... rest of app
Вот для него суть: http://git.io/Vr9KJA