gulp-pipeon不喜欢gulp-sass

时间:2015-03-31 14:01:33

标签: gulp gulp-watch gulp-sass

拥有以下gulp文件:

var gulp = require("gulp");
var args = require("yargs").argv;
var config = require("./gulp.config")();
var del = require("del");
var $ = require("gulp-load-plugins")({ lazy: true });

gulp.task("styles", ["clean-styles"], function() {
    log("Compiling SASS ---> CSS");

    return gulp
     .src(config.sass)
     .pipe($.plumber())
     .pipe($.sass())
     .pipe($.autoprefixer({ browsers: ["last 2 version", "> 5%"] }))
     .pipe(gulp.dest(config.temp));
});

gulp.task("clean-styles", function(done) {
   var files = config.temp + "**/*.css";
   clean(files, done);
});

gulp.task("sass-watcher", function() {
    gulp.watch([config.sass], ["styles"]);
});

function clean(path, done) {
    log("Cleaning: " + $.util.colors.yellow(path));
    del(path, done);
};

function log(msg) {
   if (typeof (msg) == "object") {
    for (var item in msg) {
        if (msg.hasOwnProperty(item)) {
            $.util.log($.util.colors.yellow(msg[item]));
        }
    }
   } else {
    $.util.log($.util.colors.yellow(msg));
   }
}; 

问题在于sass-watcher没有完成任务,这是我相信的gulp-plumber的全部含义。

如果sass文件中存在编译错误,则使用此配置停止流,并显示最少的错误信息:

如果我将配置更改为,请注意sass选项的差异

return gulp
    .src(config.sass)
    .pipe($.plumber())
    .pipe($.sass({ errLogToConsole: true }))
    .pipe($.autoprefixer({ browsers: ["last 2 version", "> 5%"] }))
    .pipe(gulp.dest(config.temp));

任务正确完成,我收到以下错误消息:

[15:50:22] [gulp-sass] error reading values after 10px on line 23 in     C:/Projects/ProjectName/sass/bootstrap-custom.scss

我更希望错误由gulp-plumber处理,有什么想法为什么它与gulp-sass不一致?

顺便说一句,我使用的是cmd prompt

2 个答案:

答案 0 :(得分:0)

水管工在我的gulp设置中工作正常。

在完成任务之前删除return。这就是为我解决的问题。我认为此时任何任务都不是必需的。

目前有一些延迟加载报告的问题。验证您是否正在使用更新的gulp-sass和gulp-plumber,并为gulp-load-plugins关闭了延迟加载。

另外,对于您的sass任务,请尝试设置errLogToConsole: false,以免它干扰水管工。无论如何,管道工真的是更好的记者。

答案 1 :(得分:0)

尝试添加.pipe($.sass().on('error', $.sass.logError))而不是.pipe($.sass())。它对我有用!