2012-12-13 34 views
9

Vì vậy, tôi đã thiết lập dự án Express cơ bản và tôi đang sử dụng dự án github này, https://github.com/andrew/node-sass, để có thể sử dụng Sass trên đầu nút. Đây là số điện thoại app.js hiện tại của tôi:Bao gồm và tự động biên dịch Sass trên máy chủ Express

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

Tôi cần làm gì để Sass hoạt động và tự động biên dịch lại? Tôi không thể tìm thấy bất kỳ thông tin hữu ích nào cho các máy chủ Express cụ thể.

+0

Tôi sẽ chỉ sử dụng phương pháp này nếu nó thực sự được biên dịch trước các kiểu của bạn trước khi ứng dụng được chạy. Nếu nó không làm điều đó, tôi sẽ tránh sử dụng giải pháp này. – Oddman

Trả lời

16

Đầu tiên thêm require tuyên bố này:

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

và sau đó đoạn mã sau, trong app.configure khối của bạn:

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

Nhưng Tôi xin lỗi để nói rằng các thư viện nút-sass là khá vô dụng tại thời điểm này, vì các tệp @import, trong các tệp scss của bạn, không hoạt động như được cho là để ... Xem https://github.com/andrew/node-sass/issues/27 để biết trạng thái hiện tại.

CẬP NHẬT 2013/10/22: Rõ ràng vấn đề nêu trên dường như được cố định theo @jonathanconway trong các ý kiến ​​dưới đây ... Mặc dù vẫn còn một unanswered comment on the issue from someone that still experiences the error at 2013-09-03

+0

Vì vậy, tôi nên sử dụng LESS hoặc Stylus? –

+3

Cá nhân tôi thích SASS với cú pháp SCSS trên cả LESS và Stylus, chủ yếu là do khuôn khổ tuyệt vời http://inuitcss.com/. Vì vậy, tôi sẽ khuyên bạn nên tiếp tục sử dụng SASS, nhưng biên dịch nó với sass ruby-gem. Đó là những gì tôi sẽ làm cho đến khi nút-sass, hoặc gói khác sẽ nhận được đủ tốt ... – joakimbeng

+0

Tuyệt vời, cảm ơn! –

0

Giống như joakimbeng nói, hiện nút-sass thư viện có vấn đề trong đó @import bị hỏng.

Tuy nhiên! Tôi tìm thấy một cách giải quyết khác, trong đó you can see here.

Những gì tôi đã làm về cơ bản là lấy sass thô (trong trường hợp của tôi, scss), và để cho node-sass hiển thị chuỗi cho tôi. Tuy nhiên, vì đó là thư mục làm việc hiện tại là bất cứ nơi nào tệp server.js của bạn được đặt, bạn sẽ phải đặt url trong tệp sass của bạn, liên quan đến server.js của bạn. Trong trường hợp của tôi, like this.

Các vấn đề liên quan