2015-10-23 16 views
6

Tôi không thể tìm ra những gì tôi đang làm sai ở đây. Tôi đang nhận được một thông báo lỗi thực sự kỳ lạ khi tôi cố gắng và tạo ra một tập tin sourcemap sử dụng Gulp.Lỗi Gulp khi tạo sourcemap ("CssSyntaxError")

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

Tôi muốn chúng được tạo trong tệp .map riêng biệt. Tôi không thể hiểu tại sao nó cho tôi biết có lỗi trong tập tin mà tôi đã yêu cầu tạo ra ...?

Tôi đang làm gì sai?

Dưới đây là gulpfile.js tôi:

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

Tại sao các bạn đặt nguồn của bạn bản đồ vào máy chủ sản xuất ở tất cả? – cimmanon

+0

@cimmanon Tôi không đặt sourcemaps của mình trên bất kỳ máy chủ sản xuất nào. Điều gì đã cho bạn ý tưởng đó? –

+0

Bạn đã làm: "Tôi muốn chúng được tạo trong một tệp .map riêng biệt để người dùng trung bình sẽ không nhìn thấy chúng khi truy cập trang web". Tại sao người dùng trung bình lại thấy bản đồ nguồn ở tất cả, trừ khi nó ở trên máy chủ sản xuất? – cimmanon

Trả lời

26

Hóa ra nó chỉ đơn giản là các vị trí của dòng .pipe(sourcemaps.write('.')). Di chuyển nó giải quyết vấn đề:

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

Rất thích biết tại sao: -/

+3

Cảm ơn bạn! Tôi biết tất cả các dấu chấm phẩy của tôi là theo thứ tự ... –

+0

tương tự ở đây, nhưng không có ý tưởng tại sao các sourcemaps cần phải được kết thúc – Jorre

+2

@ Jorre tôi tin sourcemaps.write() cần phải đến sau autoprefixer() vì autoprefixer cố gắng thêm tiền tố vào bản đồ nguồn, gây ra lỗi –

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