2010-12-03 9 views
11

Cualquiera tiene realmente newbie guía de nodejs - express - SASS/LESS? No he podido hacer que esto funcione. El ejemplo que tengo ahora es un bareboned posible ..Node.js - express - jade - compile 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 })); 
}); 

El archivo se encuentra en style.css.lesspub_dir, puedo tener acceso que directa, y el estilo es

@brand_color: #4D926F; 
body { 
    color: @brand_color; 
} 

Por lo que yo entiendo, se supone que la compilación tiene lugar en la puesta en marcha, y se generará un archivo css en el src -dir, ya que no se especifica dest.
Mi servidor funciona bien, pero independientemente de la cantidad de maneras en que he intentado meterme con los directorios, directorios y nombres de los archivos LESS/SASS (y su respectivo contenido LESS/SASS) no puedo hacerlo funcionar. ¡Maldito! Ayuda.

+0

... Por supuesto que el directorio src escritura accesible ... F (* & =) – Gnimm

+0

Todavía no lo entiendo. – tofutim

Respuesta

13

También soy un principiante tratando de obtener esta configuración. He intentado algunos fragmentos que encontré hasta que finalmente noté que Express tiene un comando 'express' que establece un nuevo proyecto.

Pruebe express -c less para crear un proyecto de muestra con LESS como motor de CSS.

Esto debería crear los directorios necesarios. Los nuevos archivos CSS se servirán desde su directorio estático.

La configuración es:

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

Sí, funcionó para mi caso sass.Utilicé el siguiente comando 'express myapp -c sass' Además de crear aplicaciones con estructura express, también agregué configuraciones node-sass-middleware a mi aplicación. –

2

su configuración es la configuración estándar para readymade. Sin embargo, asegúrese de que haya menos compilador instalado en su sistema.

npm install lessjs readymade

y luego añadir lo siguiente a sus server.js

app.use(require('readymade').middleware({root: "public"}));

0

estoy trabajando en 4.x expresa y mediante SASS. Aquí está una parte fragmento que estoy usando para los estilos (la mente los comentarios):

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 

aquí es una esencia para ello: http://git.io/Vr9KJA

Cuestiones relacionadas