首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gulp-notify和gulp-plumber进行错误处理

使用gulp-notify和gulp-plumber进行错误处理
EN

Stack Overflow用户
提问于 2014-08-04 03:25:00
回答 2查看 10.8K关注 0票数 10

在以下情况下,我要显示通知:

  1. An error An
  2. When successfully

(脚本成功执行时出现错误)

所有通知实际上都在工作,但始终显示成功通知,即使出现错误也是如此。

如何确保仅在未发生错误时才显示成功通知?

这是我目前的任务:

代码语言:javascript
复制
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']);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-29 00:37:28

我遇到了同样的问题,对我有效的是gulp-if和一个自定义的错误处理程序。基本上,我会在抛出错误时设置errorFree = false,然后在最后显示成功消息时使用gulp-if来确定是否调用notify()

使用您的gulpfile:

代码语言:javascript
复制
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的目的。)

票数 21
EN

Stack Overflow用户

发布于 2016-12-02 00:47:27

我最近遇到了非常类似的情况,Jeffwa提供的代码帮助我让它工作;但我正在编译和合并几个文件,并且遇到了错误和“成功”通知被触发的问题。

如果其他人遇到类似的情况,我找到的解决方案是在成功通知上创建一个函数,如果有错误,则返回false,或者返回信息对象。这是代码示例。

代码语言:javascript
复制
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' ) );
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25108262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档