2014-12-18 10 views
10

Próbuję uzyskać pracę z węzłem-sass-middleware przy pomocy ekspresowego. Aplikacja działa bezbłędnienode-sass-middleware nie kompilowanie

...(modules) 
var sassMiddleware = require('node-sass-middleware'); 

var routes = require('./routes/index'); 

var app = express(); 

// uncomment after placing your favicon in /public 
//app.use(favicon(__dirname + '/public/favicon.ico')); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
//---- LOAD SASS -----// 
// adding the sass middleware 
var srcPath = __dirname + '/scss'; 
var destPath = __dirname + '/public/stylesheets'; 
app.use(sassMiddleware({ 
    src: srcPath, 
    dest: destPath, 
    debug: true, 
    outputStyle: 'compressed' 
})); 

app.use(express.static(path.join(__dirname, 'public'))); 

Czy ktoś może zobaczyć cokolwiek złego w sposobie, w jaki próbuję skompilować sass?

struktura plików:

app 
controllers 
routes 
public 
-stylesheets 
scss 
... 
+0

Jaką wersję Expressu używasz? W przykładzie package.json używają połączenia 2.7.9. Konwencja nie zmieniło dużo, więc może trzeba zrobić coś jak app.use (sassMiddleware ({ src: srcPath, dest: destPath, debug: prawda, outputStyle: 'skompresowany' })()); – jusynth

Odpowiedz

7

ten sposób app.js powinno być:

app.use(sassMiddleware({ 
    src: srcPath, 
    dest: destPath, 
    debug: true, 
    outputStyle: 'compressed' 
}), 
express.static(path.join(__dirname, 'public'))); 

także głównym plik SCSS powinny być nazwane style.scss i być wewnątrz SCSS/stylesheets/katalogu.

Powinieneś zobaczyć dziennik w ten sposób, jeśli prawidłowo załadowany moduł:

source : /Users/abc/Desktop/SO/SO_node/scss/stylesheets/style.scss 
    dest : /Users/abc/Desktop/SO/SO_node/public/stylesheets/stylesheets/style.css 
    read : /Users/abc/Desktop/SO/SO_node/public/stylesheets/stylesheets/style.css 
    render : /Users/abc/Desktop/SO/SO_node/scss/stylesheets/style.scss 
+0

Twoje rozwiązanie działało jak czar. To ironiczne, że żaden przykład poprawnej struktury użycia 'node-sass-middleware' nie występuje prawie w żadnym innym miejscu! To był jedyny przykład, który znalazłem! –

+0

Głównym problemem jest ścieżka do pliku * .scss. Zduplikowane nazwy "scss/stylesheets /" – Volodymyr

0

Lepiej pójść na grunt-sass. Prosta konfiguracja, zautomatyzowane zadanie (dzięki chrząkaniu), a także szybsze kompilowanie z powodu libsass, która jest wersją C oryginalnego kompilatora Ruby dla SASS. Skompilować Sass/SCSS plików w 0,3 sekundy zamiast 3.

1

A problemu może być również, że chcesz skompilować scss

zamiast sass. Dlatego ustaw indentedSyntax na false.

app.use(require('node-sass-middleware')({ 
    src: path.join(__dirname, 'scss'), 
    dest: path.join(__dirname, 'public'), 
    indentedSyntax : false, 
    sourceMap: true 
})); 

Lub usuń go całkowicie. Express-generator dodaje tę wartość domyślnie.