2010-12-03 4 views
11

Quelqu'un at-il un vraiment newbie guide to nodejs - express - SASS/LESS? Je n'ai pas réussi à faire fonctionner ça. L'exemple que j'ai maintenant un bareboned possible ..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 })); 
}); 

Le fichier style.css.less est situé dans pub_dir, je peux accéder à ce directement, et le style est

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

Pour autant que je comprends, la compilation est supposée avoir lieu au démarrage, et un fichier css sera généré dans le src -dir, car dest n'est pas spécifié.
Mon serveur fonctionne correctement, mais quel que soit le nombre de tentatives que j'ai faites avec les noms de répertoires, répertoires et noms des fichiers LESS/SASS (et leur contenu LESS/SASS respectif), je n'arrive pas à le faire fonctionner. Zut! Aidez-moi.

+0

Bien sûr ... faire le répertoire src écriture accesible ... F (* & =) – Gnimm

+0

Je ne comprends toujours pas. – tofutim

Répondre

13

Je suis également un newb essayant d'obtenir cette installation. J'ai essayé quelques extraits que j'ai trouvés jusqu'à ce que je remarque enfin que express a une commande 'express' qui crée un nouveau projet. Essayez express -c less pour créer un exemple de projet avec LESS comme moteur CSS.

Cela devrait créer les répertoires requis. Les nouveaux fichiers CSS seront servis à partir de votre répertoire statique.

La configuration est:

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

Yup, cela a fonctionné pour mon cas de sass.J'ai utilisé la commande suivante 'express myapp -c sass' En plus de créer une application avec une structure express, il a également ajouté les paramètres node-sass-middleware à mon application. –

2

Votre configuration est la configuration standard pour readymade. Assurez-vous que moins de compilateur est installé sur votre système.

npm install lessjs readymade

Et puis ajoutez ce qui suit à vos server.js

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

0

Je travaille sur 4.x express et en utilisant SASS. Voici une partie de bout J'utilise des styles (l'esprit les commentaires):

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 

Voici un point essentiel pour elle: http://git.io/Vr9KJA