Node.js 链接gulp任务和传递变量

Node.js 链接gulp任务和传递变量,node.js,gulp,Node.js,Gulp,我正在尝试建立一个gulp任务,在连接javascript文件之前,将它们按正确的顺序排序 这意味着1->获取已安装的bower组件,2->将组件按包含顺序排序,3->将已排序的文件数组传递给concat方法 到目前为止,我已经做到了 var gulp = require('gulp'); var dependency_orderer = require('dependency-orderer'); var exec = require('child_process').exec; var b

我正在尝试建立一个gulp任务,在连接javascript文件之前,将它们按正确的顺序排序

这意味着1->获取已安装的bower组件,2->将组件按包含顺序排序,3->将已排序的文件数组传递给concat方法

到目前为止,我已经做到了

var gulp = require('gulp');
var dependency_orderer = require('dependency-orderer');
var exec = require('child_process').exec;

var bower_list, depend_array, js_depend_array;
gulp.task('order-dependencies',['get-bower-list'], function(){
    console.log(bower_list);
 //   depend_array = dependency_orderer(bower_list);
    //console.log(depend_array);
//    return depend_array;
});

gulp.task('get-bower-list', function(){
    exec('bower list -p', function(err, stdout, stderr){
        if(err) return console.log(err);
        bower_list = stdout;
        console.log(bower_list);
        return bower_list;
    });

});
gulp.task('concat-files',['order-dependencies'], function(){


});
但问题是,我似乎无法在
顺序依赖项
任务中获取我的
bower_列表


关于如何实现这一点,您有什么建议吗?

您的问题是,任务完成时不需要等待您发出的异步调用(
exec(…)
)。因此,当您在第二个任务中读取变量时,该变量仍然是未定义的

尝试使用回调来定义任务何时结束

gulp.task('get-bower-list', function(done){
    exec('bower list -p', function(err, stdout, stderr){
        if(err) return console.log(err);
        bower_list = stdout;
        console.log(bower_list);
        return done();
    });
});
您还可以使用承诺来定义任务何时“完成”