Angularjs 在两个gulp任务之间传递数据而不写入磁盘

Angularjs 在两个gulp任务之间传递数据而不写入磁盘,angularjs,gulp,systemjs,ng-annotate,Angularjs,Gulp,Systemjs,Ng Annotate,我正在尝试注释和缩小一个systemjs angular项目。Systemjs附带了一个构建函数,但它不是“gulp-aware”。可以向构建器传递一个缩小选项,但是没有一个用于ng annotate的选项,因此我需要gulp来代替这两个选项 gulp.task('bundle', function () { var options = {} builder.buildStatic('./assets/app/app.js', options) .then(functio

我正在尝试注释和缩小一个systemjs angular项目。Systemjs附带了一个构建函数,但它不是“gulp-aware”。可以向构建器传递一个缩小选项,但是没有一个用于ng annotate的选项,因此我需要gulp来代替这两个选项

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的存储库包含一个如何完成的示例

注意:您应该让所有这些
load-*
任务在一开始就运行,您可以像它们那样使用
run sequence
,或者将它们作为“真实”任务的依赖项。

npm上的包导出对象
argv
,这是命令行参数的一种非常巧妙的表示。例如,调用

gulp -a test -b 123 my-task
在运行期间由参数argv
value
表示

{ a: 'test', b: 123 }
它被传递给gulp任务
my task
,并在它之前传递给它的所有前辈

如果其中一个前置程序为
argv

argv.newProp = 'newValue'
此道具将可供其所有继任者使用,包括您真正想要执行的任务


指令
const{argv}=require('yargs')
将放在gulpfile的开头,并且可以使用别名和默认值来丰富它。参考资料是

Yikes-这真的很复杂。让我觉得我对这个问题的看法是错误的?为什么这么复杂?非常直率和优雅。您可以按照建议将其保存在中间目录中,但速度可能较慢。此外,您可以在其上构建一个抽象,使事情变得更简单。无论如何,通过这种方式,您可以在任务之间“通信”(数据),而无需将实际数据保存在fs中。好的,我可以再试一次,但现在我发现ng annotate+systemjs也有点麻烦。生活在最前沿。。。