2012-12-13 5 views
9

Mam podstawowy zestaw projektów Express i używam tego projektu Github, https://github.com/andrew/node-sass, aby móc używać Sassa na szczycie węzła. To jest mój app.js obecnie:Włączając i automatycznie kompilując Sass na Express serwerze

var io = require('socket.io'), 
    express = require('express'), 
    path = require('path'), 
    routes = require('./routes'), 
    jquery = require('jquery'); 


/** 
* Create app 
*/ 

var app = express() 
    , server = require('http').createServer(app) 
    , io = io.listen(server); 

/** 
* Configure app 
*/ 

app.configure(function(){ 
    app.set('port', 8080); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

Co muszę zrobić, aby dostać pracę i Sass auto rekompilacji? Nie mogę znaleźć żadnych użytecznych informacji dla serwerów Express.

+0

Używałbym tego podejścia tylko wtedy, gdy faktycznie jest ono kompilowane przed uruchomieniem aplikacji. Jeśli tego nie zrobi, uniknę tego rozwiązania. – Oddman

Odpowiedz

16

Najpierw dodaj require oświadczenie:

var sass = require("node-sass"); 

a następnie następujący kod w swoim bloku app.configure:

... 
app.use(sass.middleware({ 
    src: <your-sass-files-dir>, 
    dest: path.join(__dirname, 'public'), 
    debug: true 
})); 
... 

Ale przykro mi to powiedzieć, że biblioteka node-Sass jest całkiem bezużyteczny bezużyteczny w tej chwili, ponieważ pliki @import w plikach scss nie działają tak, jak powinny na ... Zobacz https://github.com/andrew/node-sass/issues/27 dla aktualnego statusu.

UPDATE 22.10.2013: Widocznie problem wspomniano powyżej wydaje się być ustalona według @jonathanconway w komentarzach poniżej ... Choć istnieje nadal unanswered comment on the issue from someone that still experiences the error at 2013-09-03

+0

Więc powinienem użyć LESS lub Stylus? –

+3

Osobiście preferuję SASS ze składnią SCSS zarówno dla LESS, jak i Stylusa, głównie ze względu na świetny framework http://inuitcss.com/. Polecam więc nadal używać SASS, ale skompiluj go z rubinowym klejnotem. To właśnie zrobię, dopóki węzeł sass lub inny pakiet nie będzie wystarczająco dobry ... – joakimbeng

+0

Awesome, thanks! –

0

Jak joakimbeng powiedział, obecnie węzeł-Sass biblioteka ma problem, w którym numery @import są zepsute.

Jednak! Znalazłem obejście, które you can see here.

Zasadniczo pobrałem surowy sass (w moim przypadku, scss), i niech węzeł-sass wyrenderuje dla mnie ciąg. Ale ponieważ jest to aktualny katalog roboczy jest wszędzie tam, gdzie znajduje się plik server.js, będziesz musiał umieścić adres URL w swoim pliku sass, w stosunku do twojego server.js. W moim przypadku: like this.

Powiązane problemy