@Daisuke-sama

Gulp Sass Streamqueue Plumber. Как продолжить исполнение при ошибке?

Привет

В gulp использую streamqueue для формирования продакшн-css из vendor'ских стилей и своих scss.

Так как это повторяющееся задание в watch, то plumber использовать хочу для завершения одного цикла задачи в случае ошибки конвертации scss, и продолжить смотреть далее на изменения, и снова пробовать генерить.

Вообщем обрывается исполнение watch при использовании именно sass конвертации. Когда использую конвертацию из pug/jade - всё нормально - выполниние таска не прерывается, а обработчик ошибки пишет в чём косяк.

Фишки, типа, this.emit('end') в обработчике ошибки - тоже без эффекта. Как и on('error', callback) на sass().

Подскажите решение, плиз.

gulp.task('fincss', function () {
    watch([workData.sassSrcFiles, workData.cssVendorSrcFiles], {}, function () {
        var convertFromScssToCssAndConcat =
            gulp.src(workData.sassSrcFiles)
                .pipe(plumber(error))
                .pipe(sass());

        var minifyAndConcatExistingCss =
            gulp.src(workData.cssVendorSrcFiles)
                .pipe(plumber(error));

        return sq({objectMode: true}, minifyAndConcatExistingCss, convertFromScssToCssAndConcat)
            .pipe(concat('final.min.css'))
            .pipe(uglifycss())
            .pipe(gulp.dest(workData.cssDest))
            .pipe(livereload());
    });
});

var error = function (e) {
    console.error('Error in plugin "' + e.plugin + '"');
    console.error('   "' + e.message + '"');
    console.error('   In file "' + e.fileName + '", line "' + e.lineNumber + '".');
    console.log('--------------------------------------');
    console.log(e);
};


Это работает:

gulp.task('toHtml', function () {
    watch(workData.pugSrcFiles, {}, function (e) {
        message('Start generating template.');
        gulp.src([workData.pugSrcFiles, '!' + workData.pugSrc + '_*.pug'])
            .pipe(plumber(error))
            .pipe(pug({pretty: true}))
            .pipe(gulp.dest(pubDir))
            .pipe(livereload());
    });
});
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы