2015-10-23 10 views
6

Ich kann nicht herausfinden, was ich hier falsch mache. Ich bekomme eine wirklich seltsame Fehlermeldung, wenn ich versuche, eine Quellkartendatei mit Gulp zu erstellen.Schluck Fehler beim Erstellen von Quellkarte ("CssSyntaxError")

events.js:85 
     throw er; // Unhandled 'error' event 
      ^
CssSyntaxError: /www/static/sass/maps/main.css.map:1:198: Missed semicolon 

Ich möchte, dass sie in einer separaten .map-Datei erstellt werden. Ich kann nicht verstehen, warum es mir sagt, dass in der Datei, die ich erstellen wollte, ein Fehler aufgetreten ist ...?

Was mache ich falsch?

Hier ist mein gulpfile.js:

var gulp = require('gulp'), 
    sass = require('gulp-sass'), 
    minifyCSS = require('gulp-minify-css'), 
    autoprefixer = require('gulp-autoprefixer'), 
    sourcemaps = require('gulp-sourcemaps'), 
    input = 'static/sass/**/*.scss', 
    output = 'static/css'; 

var sassOptions = { 
    errLogToConsole: true, 
    outputStyle: 'expanded' 
}; 

gulp.task('sass', function() { 
    return gulp 
     .src(input) 
     .pipe(sourcemaps.init()) 
     .pipe(sass(sassOptions).on('error', sass.logError)) 
     .pipe(sourcemaps.write('.')) 
     .pipe(autoprefixer()) 
     .pipe(minifyCSS()) 
     .pipe(gulp.dest(output)) 
}); 

gulp.task('watch', function() { 
    gulp.watch(input, ['sass']); 
}); 

// Default task - Compile then set Watch 
gulp.task('default', ['sass', 'watch']); 
+0

Warum Sie platzieren Ihre Quelle an allen Produktionsserver Karten auf? – cimmanon

+0

@cimmanon Ich platziere meine Quellkarten nicht auf einem Produktionsserver. Was hat dir diese Idee gegeben? –

+0

Sie haben Folgendes getan: "Ich möchte, dass sie in einer separaten .map-Datei erstellt werden, damit der durchschnittliche Benutzer sie beim Besuch der Website nicht sehen kann". Warum sollte der durchschnittliche Benutzer die Quellzuordnung überhaupt sehen, es sei denn, er befindet sich auf dem Produktionsserver? – cimmanon

Antwort

26

Es stellt sich heraus, es ist einfach die Platzierung der Linie .pipe(sourcemaps.write('.')) war. Bewegen sie das Problem gelöst:

return gulp 
    .src(input) 
    .pipe(sourcemaps.init()) 
    .pipe(sass(sassOptions).on('error', sass.logError)) 
    .pipe(autoprefixer()) 
    .pipe(minifyCSS()) 
    .pipe(sourcemaps.write('.')) // This line moved to here 
    .pipe(gulp.dest(output)) 

Würde gerne wissen, warum: -/

+3

Danke! Ich wusste alle meine Semikolons waren in Ordnung ... –

+0

gleich hier, aber keine Ahnung, warum die Quellkarten am Ende sein müssen – Jorre

+2

@Jorre Ich glaube, dass quellemaps.write() nach autoprefixer() kommen muss, weil autoprefixer versucht, Präfixe hinzuzufügen zur Quellkarte, die den Fehler verursacht –