拥有以下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
答案 0 :(得分:0)
水管工在我的gulp设置中工作正常。
在完成任务之前删除return
。这就是为我解决的问题。我认为此时任何任务都不是必需的。
目前有一些延迟加载报告的问题。验证您是否正在使用更新的gulp-sass和gulp-plumber,并为gulp-load-plugins关闭了延迟加载。
另外,对于您的sass任务,请尝试设置errLogToConsole: false
,以免它干扰水管工。无论如何,管道工真的是更好的记者。
答案 1 :(得分:0)
尝试添加.pipe($.sass().on('error', $.sass.logError))
而不是.pipe($.sass())
。它对我有用!