Node.js 链接gulp任务和传递变量
我正在尝试建立一个gulp任务,在连接javascript文件之前,将它们按正确的顺序排序 这意味着1->获取已安装的bower组件,2->将组件按包含顺序排序,3->将已排序的文件数组传递给concat方法 到目前为止,我已经做到了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
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();
});
});
您还可以使用承诺来定义任务何时“完成”
见