web-dev-qa-db-ja.com

通知を伴うgulp-sassエラー

Gulp-sassエラーのメッセージをnotifyに表示させる方法はないかと思いました。できれば、コンソールに表示される実際のメッセージ。

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

通知をある種のエラーコールバックにパイプしたいと思います。

助けていただければ幸いです。

13
Malibur

これに自分で苦労した後、私はこれがうまくいったことに気づきました:

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オプションを使用してエラーをキャッチする必要があります。

お役に立てば幸いです。

27
Alex Baulch

私はここでのパーティーに少し遅れていますが、私が抱えていた問題は、コードにエラーがあると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');を追加する必要がありました

11
Meisam Mulla

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
sooks

コンソールでも印刷する必要があると思います。このコードは、現在のバージョンの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
princebillyGK

これも機能します:

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