2016-04-15 3 views
0

Я не уверен, чтобы сделать ниже приведенный код для работы:Как передать массив в задаче GULP в цикле

var language = ['en', 'sp']; 

gulp.task('jsonResourcesConcat', function() { 
    return gulp.src('path/to/json/' + language + '/resources.json') 
    .pipe(insert.prepend('window.resourcesData.' + language + ' = ')) 
    .pipe(concat('resources-' + language +'.js')) 
    .pipe(gulp.dest('./www/assets/json2js/')); 
}); 

мне нужен файл должен быть выведен в папку ./www/assets/json2js/ с именами файлов ресурсов-ан .js' и 'ресурсы-sp.js'

+0

вам нужны оба должны быть выполнены в задаче или каждый язык нуждается в его собственный делать задача? – MarcoL

ответ

4

Хорошо, давайте начнем с вашего сценария:

var languages = ['en', 'sp']; 

// this is the function that does all the work 
function buildJson(language) { 
    return gulp.src('path/to/json/' + language + '/resources.json') 
    .pipe(insert.prepend('window.resourcesData.' + language + ' = ')) 
    .pipe(concat('resources-' + language +'.js')) 
    .pipe(gulp.dest('./www/assets/json2js/')); 
}); 

Теперь установите EventStream модуль для обработки потоков легко:

$ npm install event-stream 

И использовать его для труб Глоток потоков

var es = require('event-stream'); 

// now define the gulp task 
gulp.task('jsonResourcesConcat', function gulpTask(){ 
    // build the streams 
    var streams = languages.map(buildJson); 

    // now merge the streams together 
    // see the doc here: https://www.npmjs.com/package/event-stream#merge-stream1streamn-or-merge-streamarray 
    return es.merge(streams); 
}); 

Аналогичный ответ можно найти здесь: How to batch similar gulp tasks to reduce code repetition

+0

, который просто работал, как ожидалось, спасибо много :) – Syed

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