链接吞吐任务和传递variables

我正在尝试构build一个吞咽任务,将我的JavaScript文件按照正确的顺序sorting,然后连接它们。

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

到目前为止,我已经pipe理好了

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_list order-dependencies任务。

有关如何完成此任何build议?

您的问题是,任务完成而不等待您所做的asynchronous调用( exec(...) )。 所以当你在第二个任务中读取它时,variables仍然是undefined

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

 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(); }); }); 

你也可以使用promise来定义任务何时完成

请参阅API文档