与通知有关的Gulp-sass错误

Mal*_*bur 13 sass notify gulp

我想知道是否有办法让通知显示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' }));
});
Run Code Online (Sandbox Code Playgroud)

我想将通知传递给某种错误回调.

任何帮助赞赏.

Ale*_*lch 27

在与自己挣扎之后,我发现这有效:

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' }));
});
Run Code Online (Sandbox Code Playgroud)

您需要使用onErrorgulp-sass提供的选项来捕获错误.

希望有所帮助!

  • 值得补充:`.pipe(sass(...).on('error',function(){...})`不等效.它会捕获错误但Sass在第一次错误后不会运行. (7认同)

Mei*_*lla 11

我在这里参加派对有点晚了,但我遇到的问题是,如果代码中出现错误,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' }));
});
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我不得不补充 this.emit('end');