与通知有关的Gulp-sass错误

时间:2014-04-01 13:39:04

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

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

任何帮助表示赞赏。

5 个答案:

答案 0 :(得分: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' }));
});

您需要使用gulp-sass提供的onError选项来捕获错误。

希望有所帮助!

答案 1 :(得分: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' }));
});

在我的情况下,我必须添加this.emit('end');

答案 2 :(得分:3)

使用gulp-sass v2.0.4,这可行:

.pipe(sass())
.on('error', notify.onError(function (error) {
   return 'An error occurred while compiling sass.\nLook in the console for details.\n' + error;
}))

答案 3 :(得分:0)

这也有效:

/* Compile sass, and output error to notif */
    .pipe(sass({}).on('error', function(err) {
        return notify().write(err);
    }))

答案 4 :(得分:0)

我认为我们也应该在控制台中打印,并且此代码在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'}));
});