2016-08-08 6 views
1

Streamqueue、sass、plumberを使用して最後まで見ているgulpタスクで問題が発生しましたか? タスクはベンダのcss | scssファイルから本番用のcssファイルをコンパイルしています。ギャルプstreamqueue 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); 
}; 

しかし、scssファイルでエラーが発生した場合、タスクを中断します。そして、インターネットで提供される配管工を使った実験は、とにかく私を助けません。 concatより前にplumber()を挿入するか、エラーハンドラ内で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

stream-seriesを使用してストリームキューを置き換えることができます。

にあなたの設定ファイルを変更

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

こんにちは、 ありがとう しかし、 '\ node_modules \ stream-series \ index.js:23 e.pipe(pauseStream);というエラーが発生しました。 TypeError:e.pipeは関数ではありません at node_modules \ stream-series \ index.js:23:7 at Array.forEach(ネイティブ) at module.exports node_modules \ stream-series \ index.js:20: (C:\ projects \ jp \ node_modules \ gulp-watch \ index.js:144:3) at node_modules \ gulp-watch(C:\ projects \ jp \ gulpfile.jsの ) \ node_modules \ graceful-fs.js:78:16 at node_modules \ gulp-watch \ node_modules \ vinyl_file \ index.js:52:4 at FSReqWrap.readFileAfterClose [as oncomplete](fs.js:380:3) ' –

+0

@PaulBurilichev、ここでコピーしたエラーログから何が起こったのか分かりません。しかし、「ストリームシリーズ」は機能するはずです。私は自分のプロジェクトで使っています。https://github.com/njleonzhang/generator-gulpionic/blob/master/generators/app/templates/_gulpfile.jsの118行目を参照してください。 – Leon

+0

ありがとうございました! –

関連する問題