在不写磁盘的情况下在吞咽任务之间传递数据

问题描述:

我正在尝试注释和缩小一个systemjs角度项目。 Systemjs带有一个构建函数,但它不是“吞噬意识”。有可能通过建设者一个选项来缩小,但没有一个用于ng-annotate,所以我需要大量的为我做两个代替。在不写磁盘的情况下在吞咽任务之间传递数据

gulp.task('bundle', function() { 
    var options = {} 
    builder.buildStatic('./assets/app/app.js', options) 
    .then(function(data) { 
     console.log("then called"); 
     // make data available for another task    
    }); 

我如何可以结合以上

gulp.task('productionApp', function() { 
    return [source the output from 'bundle'] 
    .pipe(ngannotate()) 
    .pipe(uglify()) 
    .pipe(gulp.dest('./dist')); 
}); 

我可以只输出的第一个任务到一个文件,然后.src在,但不能是最好的方式?

最简单的方法是将其保存在缓冲区(实际上是一个简单的对象)中,然后制作一个流并继续,就像您使用src一样。

Gulp的存储库包含一个recipe它是如何完成的。

注:你应该让所有的load-*任务在一开始运行,您可以使用run-sequence因为他们已经完成,或者让他们为“真正的”工作依赖。

+0

Yikes - 这真的很复杂。让我觉得我以某种方式错误地看待问题? –

+0

为什么复杂?非常直接和优雅。您可以按照您的建议将其保存在中间目录中,但速度可能会更慢。另外,您可以在其上构建一个抽象,以使事情更轻松。无论如何,通过这种方式,您可以在任务之间“交流”(数据),而无需将实际数据保存在fs中。 –

+0

好吧,我可以再试一次,但现在我看到ng-annotate + systemjs也有点烦琐。生命在流血的边缘... –