2016-08-08 2 views
1

Возникает проблема с задачей gulp с использованием Streamqueue, sass, plumber и наблюдения за ним в конце. Задача компилирует производственный css-файл от поставщиков css | scss-файлов с моим собственным.Gulp поток окунь сантехник смотреть. Ошибки ломают задачу

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

Но когда ошибка в файле scss, а затем нарушение задачи. И любые эксперименты с водопроводчиком, которые обеспечивают в Интернете, мне все равно не помогают. Что-то вроде вставки сантехника() до concat, или с помощью this.emit('end') в обработчике ошибок ничего не делать.

В других моих задач как

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

все работает довольно хорошо, и не нарушая задачу.

Помогите, пожалуйста.

ответ

0

Вы можете использовать потоковые серии для замены streamqueue.

изменить конфигурационный файл, чтобы:

var series = require('stream-series'); 

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

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

     return series(minifyAndConcatExistingCss, convertFromScssToCssAndConcat) 
      .pipe(concat('final.min.css')) 
      .pipe(uglifycss()) 
      .pipe(gulp.dest(workData.cssDest)) 
      .pipe(livereload()); 
    }); 

});

+0

Привет, @leon спасибо Но я получаю ошибку '\ node_modules \ stream-series \ index.js: 23 e.pipe (pauseStream); ТипError: e.pipe не является функцией at node_modules \ stream-series \ index.js: 23: 7 в Array.forEach (native) at module.exports node_modules \ stream-series \ index.js: 20: 11) в C: \ projects \ jp \ gulpfile.js: 83: 16 при записи (C: \ projects \ jp \ node_modules \ gulp-watch \ index.js: 144: 3) at node_modules \ gulp-watch \ node_modules \ vinyl-file \ index.js: 52: 4 at node_modules \ gulp-watch \ node_modules \ vinyl-file \ node_modules \ graceful-fs \ graceful-fs.js: 78: 16 в FSReqWrap.readFileAfterClose [as oncomplete] (fs.js: 380: 3) ' –

+0

@PaulBurilichev, я не знаю, что произошло из журнала ошибок, который вы скопировали здесь. Но 'stream-series' должен работать. Я использовал его в своем проекте, вы можете обратиться к строке 118 https://github.com/njleonzhang/generator-gulp-ionic/blob/master/generators/app/templates/_gulpfile.js – Leon

+0

Большое вам спасибо! –

Смежные вопросы