2015-10-23 6 views
6

Я не могу понять, что я делаю неправильно здесь. Я получаю действительно странное сообщение об ошибке, когда пытаюсь создать файл sourcemap с помощью Gulp.Ошибка Gulp при создании sourcemap («CssSyntaxError»)

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

Я хочу, чтобы они были созданы в отдельном файле .map. Я не могу понять, почему он говорит мне, что в файле, который я попросил, создать ошибку ...?

Что я делаю неправильно?

Вот мой 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

Почему вы ставите ваш источник карты на сервере вообще? – cimmanon

+0

@cimmanon Я не размещаю свои исходные файлы на любом производственном сервере. Что дало вам эту идею? –

+0

Вы сделали: «Я хочу, чтобы они были созданы в отдельном файле .map, чтобы средний пользователь не видел их при посещении сайта». Почему средний пользователь видит исходную карту вообще, если только она не была на производственном сервере? – cimmanon

ответ

26

Оказывается, это было просто размещение линии .pipe(sourcemaps.write('.')). Перемещение это решило проблему:

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)) 

Очень хотелось бы знать, почему: -/

+3

Спасибо! Я знал, что все мои точки с запятой были в порядке ... –

+0

тоже здесь, но не знаю, почему исходные карты должны быть в конце – Jorre

+2

@Jorre Я считаю, что sourcemaps.write() должен появиться после autoprefixer(), потому что autoprefixer пытается добавить префиксы к исходной карте, которая вызывает ошибку –