2016-08-05 50 views
0

我有一個咕嘟咕嘟的任務,我想編寫HTML模板的JavaScript(允許用戶從/views目錄執行的話),添加所有其他JavaScript源到這個(從/js目錄),並將它們連接成一個文件。創建多個流的單個文件,同時保持流和文件以便與咕嘟咕嘟

它也是重要的是要有正確的順序串聯的文件,這意味着:所有文件從/js那麼所有的編譯文件從/views

我的目標是,以避免在一般創建臨時文件,所以我尋求解決方案只有流工作。

這個任務目前工作不正確排序輸出:

var eventstream = require('event-stream'); 
gulp.task('dist', function() 
{ 
    return eventstream.merge(
     gulp.src(['**/[^_]*.js', '!**/_*/**'], { cwd: 'js' }) 
    , 
     gulp.src(['**/[^_]*.html', '!**/_*/**'], { cwd: 'views' }) 
     .pipe(compile_views()) 
    ) 
    .pipe(concat('output.js')) 
    .pipe(gulp.dest('dist')); 
}); 

試了幾流從NPM合併模塊用更少的成功,所有的人都炒我的輸出至今:

  • 多流
  • 流系列
  • 合併流
  • 有序合併流

使用合併流,這仍然無法正常下令後gulp-order插件也試過。

我錯過了什麼,或我在做什麼不好的呢?我在管道方面並不擅長。

任何幫助,將不勝感激!

謝謝!

回答

1

我覺得streamqueue是你在找什麼:

var streamqueue = require('streamqueue'); 

gulp.task('dist', function() { 
    return streamqueue({ objectMode: true }, 
    gulp.src(['**/[^_]*.js', '!**/_*/**'], { cwd: 'js' }), 
    gulp.src(['**/[^_]*.html', '!**/_*/**'], { cwd: 'views' }) 
     .pipe(compile_views()) 
) 
    .pipe(concat('output.js')) 
    .pipe(gulp.dest('dist')); 
}); 
+0

謝謝!正是我期待的! – lionel