Gulp-sass error with notify

前端 未结 5 2029
粉色の甜心
粉色の甜心 2020-12-28 20:12

I wondered if there is a way to have notify display a message on gulp-sass error. preferably the actual message that is displayed in the console.

my gulp task looks

相关标签:
5条回答
  • 2020-12-28 20:54

    I'm a little late to the party here but the issue I was having was that the sass would stop compiling if there was an error in the code and I would have to restart gulp. Here is what I ended up doing:

    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' }));
    });
    

    In my case I had to add this.emit('end');

    0 讨论(0)
  • 2020-12-28 21:02

    With gulp-sass v2.0.4, this works:

    .pipe(sass())
    .on('error', notify.onError(function (error) {
       return 'An error occurred while compiling sass.\nLook in the console for details.\n' + error;
    }))
    
    0 讨论(0)
  • 2020-12-28 21:04

    This is works too:

    /* Compile sass, and output error to notif */
        .pipe(sass({}).on('error', function(err) {
            return notify().write(err);
        }))
    
    0 讨论(0)
  • 2020-12-28 21:10

    I think we should also print in the console and this code works in the current version of 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'}));
    });
    
    0 讨论(0)
  • 2020-12-28 21:15

    After struggling with this myself I found that this worked:

    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' }));
    });
    

    You need to catch the error using the onError option that gulp-sass provides.

    Hope that helps!

    0 讨论(0)
提交回复
热议问题