我试图建立一个gulp任务,在连接它们之前将我的javascript文件排序到正确的顺序。
这意味着1->获得已安装的凉亭组件,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_list
任务中获得order-dependencies
。
有关如何完成此任务的任何建议?
答案 0 :(得分:2)
您的问题是任务完成而不等待您进行的异步调用(exec(...)
)。因此,当您在第二个任务中读取变量时,变量仍为undefined
。
尝试使用回调来定义任务何时结束
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();
});
});
您还可以使用promises来定义任务“完成”的时间
请参阅API docs