我想知道是否有办法让通知显示gulp-sass错误消息。最好是控制台中显示的实际消息。
我的gulp任务看起来像这样:
gulp.task('styles', function() {
return gulp.src('src/scss/style.scss')
.pipe(sass({ style: 'compressed', errLogToConsole: true }))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
.pipe(gulp.dest(''))
.pipe(livereload(server))
.pipe(notify({ message: 'Styles task complete' }));
});
我想将通知传递给某种错误回调。
任何帮助赞赏。
在与自己挣扎之后,我发现这有效:
gulp.task('styles', function() {
return gulp.src('src/scss/style.scss')
.pipe(sass({
style: 'compressed',
errLogToConsole: false,
onError: function(err) {
return notify().write(err);
}
}))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
.pipe(gulp.dest(''))
.pipe(livereload(server))
.pipe(notify({ message: 'Styles task complete' }));
});
您需要使用gulp-sass提供的onError
选项来捕获错误。
希望有所帮助!
我在这里参加派对有点晚了,但我遇到的问题是,如果代码中出现错误,sass将停止编译,我将不得不重新启动gulp。这是我最终做的事情:
gulp.task('sass', function() {
return gulp.src('assets/scss/style.scss')
.pipe(sass({ errLogToConsole: false, }))
.on('error', function(err) {
notify().write(err);
this.emit('end');
})
.pipe(gulp.dest('assets/css'))
.pipe(notify({ message: 'SCSS Compiled' }));
});
在我的情况下,我不得不添加this.emit('end');
使用gulp-sass v2.0.4,这可行:
.pipe(sass())
.on('error', notify.onError(function (error) {
return 'An error occurred while compiling sass.\nLook in the console for details.\n' + error;
}))
这也有效:
/* Compile sass, and output error to notif */
.pipe(sass({}).on('error', function(err) {
return notify().write(err);
}))
我想我们也应该在控制台中打印,这段代码适用于当前版本的gulp-sass(4.0.1)
gulp.task('sass', function() {
gulp.src('src/sass/style.scss')
.pipe(sass({outputStyle: 'expanded'}).on('error',function(err) {
sass.logError; //I think we should also print in the console
return notify().write(err); //and the notification bar
}))
.pipe(autoprefixer({browsers:autoprefixBrowsers}))
.pipe(gulp.dest('dist/css'))
.pipe(notify({message: 'sass compiled successfully'}));
});