我想在以下情况下显示通知:
发生错误
当脚本成功执行时
发生错误
当脚本成功执行时
所有通知实际上正在工作,但是即使发生错误,也会始终显示成功通知.
这是我现在的任务:
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']);
解决方法
我遇到了同样的问题,对我来说有用的是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','watch']);
在我的gulp文件中,我实际上将grp中的每一步包装起来,如果这样,流停止处理. (我没有找到一种方法来阻止流程,而不会杀死进程,这违反了IMO的目的).
原文地址:https://www.jb51.cc/js/151160.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。