2014-03-17 3 views
1

Я пытаюсь создать задачу gulp, которая сортирует мои файлы javascript в правильном порядке, прежде чем конкатенировать их.Целевые задачи gulp и передающие переменные

Это означает, что 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 задачи.

Любые предложения о том, как это сделать?

ответ

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

, и вы можете также использовать обещания, чтобы определить, когда задачи «сделать»

см API docs

 Смежные вопросы

  • Нет связанных вопросов^_^