在以下情况下,我要显示通知:
(脚本成功执行时出现错误)
所有通知实际上都在工作,但始终显示成功通知,即使出现错误也是如此。
如何确保仅在未发生错误时才显示成功通知?
这是我目前的任务:
var gulp = require('gulp');
var sass = require('gulp-ruby-sass');
var rename = require('gulp-rename');
var notify = require('gulp-notify');
var plumber = require('gulp-plumber');
var minifycss = require('gulp-minify-css');
var autoprefixer = require('gulp-autoprefixer');
gulp.task('sass', function(){
return gulp.src('assets/scss/global.scss')
.pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")}))
.pipe(sass({ style: 'expanded' }))
.pipe(autoprefixer())
.pipe(gulp.dest('assets/css/'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('assets/css/'))
.pipe(notify({
title: 'Gulp',
subtitle: 'success',
message: 'Sass task',
sound: "Pop"
}));
});
gulp.task('watch', function(){
gulp.watch('assets/scss/**/*.scss', ['sass']);
});
gulp.task('default', ['sass', 'watch']);发布于 2014-08-29 00:37:28
我遇到了同样的问题,对我有效的是gulp-if和一个自定义的错误处理程序。基本上,我会在抛出错误时设置errorFree = false,然后在最后显示成功消息时使用gulp-if来确定是否调用notify()。
使用您的gulpfile:
var gulp = require('gulp');
var sass = require('gulp-ruby-sass');
var rename = require('gulp-rename');
var notify = require('gulp-notify');
var plumber = require('gulp-plumber');
var minifycss = require('gulp-minify-css');
var autoprefixer = require('gulp-autoprefixer');
gulp.task('sass', function(){
var onError = function(err) {
notify.onError({
title: "Gulp",
subtitle: "Failure!",
message: "Error: <%= error.message %>",
sound: "Beep"
})(err);
this.emit('end');
};
return gulp.src('assets/scss/global.scss')
.pipe(plumber({errorHandler: onError}))
.pipe(sass({ style: 'expanded' }))
.pipe(autoprefixer())
.pipe(gulp.dest('assets/css/'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('assets/css/'))
.pipe(notify({ // Add gulpif here
title: 'Gulp',
subtitle: 'success',
message: 'Sass task',
sound: "Pop"
}));
});
gulp.task('watch', function(){
gulp.watch('assets/scss/**/*.scss', ['sass']);
});
gulp.task('default', ['sass', 'watch']);在我的the文件中,我实际上将每个步骤都包装在gulp-if中,以便流停止处理。(我还没有找到一种在不终止进程的情况下停止流的方法,这违背了监视IMO的目的。)
发布于 2016-12-02 00:47:27
我最近遇到了非常类似的情况,Jeffwa提供的代码帮助我让它工作;但我正在编译和合并几个文件,并且遇到了错误和“成功”通知被触发的问题。
如果其他人遇到类似的情况,我找到的解决方案是在成功通知上创建一个函数,如果有错误,则返回false,或者返回信息对象。这是代码示例。
gulp.task('themeCss', function() {
var errorFree = true;
var onError = function(err) {
errorFree = false;
var subtitle = "Error";
var message = error.message;
notify.onError({
title: "Gulp",
subtitle: subtitle,
message: message,
sound: false
})(err);
this.emit('end');
};
//themeCssFiles is an array with the css files to be compiled/merged.
return gulp.src( themeCssFiles )
.pipe( plumber({
errorHandler: onError,
}) )
.pipe( gulpIf("*.scss", compass({
config_file: './compass-config.rb',
sass: 'scss',
css: outputCSS + "/compass"
}) ) )
.pipe( concatCss('theme.css', {
rebaseUrls: false
} ) )
.pipe( notify( function(f) {
return errorFree ? {
title: 'Gulp',
subtitle: 'success',
message: 'SCSS ready',
}
: false ;
}))
.pipe( gulp.dest( 'dist/css' ) );
});https://stackoverflow.com/questions/25108262
复制相似问题