2015-05-20 2 views
2

Чтобы создать окончательный источник JS для веб-приложения, я компилирую шаблоны JavaScript, источники CoffeScript и скрипты вендора JS. Заключительная задача, зависящая от предыдущих трех, затем объединяет скрипты в один файл.Зависимые задачи Gulp

Следующая настройка, в которой я определяю последнюю задачу с зависимостями от первых трех, последний шаг никогда не выполняется. Кажется, что процесс не дожидается, пока частичные файлы будут записаны на диск.

Я тоже пытался слить потоки событий, но, похоже, это слишком много для чего-то подобного. Я был бы признателен, если бы кто-то мог указать мне в правильном направлении.

// compile JS templates 
gulp.task('js-build-template', function() { 
    gulp.src('./../app/assets/javascripts/**/*.jst.eco') 
     .pipe(eco({ basePath: 'app/assets/javascripts', namespace: 'JST_ATL' })) 
     .pipe(concat('_templates.js')) 
     .pipe(gulp.dest('public/assets/scripts/partials')); 
}); 

// compile CoffeeScript source 
gulp.task('js-build-source', function() { 
    gulp.src(js.source) 
     .pipe(coffee()) 
     .pipe(concat('_source.js')) 
     .pipe(gulp.dest('public/assets/scripts/partials')); 
}); 

// compile vendor scripts 
gulp.task('js-build-vendor', function() { 
    gulp.src(js.vendor) 
     .pipe(concat('_vendor.js')) 
     .pipe(gulp.dest('public/assets/scripts/partials')); 
}); 

// concatenate and fingerprint files 
gulp.task('js-build', [ 'js-build-template', 'js-build-source', 'js-build-vendor' ], function() { 
    gulp.src([ 'public/assets/scripts/partials/_templates.js', 'public/assets/scripts/partials/_vendor.js', 'public/assets/scripts/partials/_source.js' ]) 
     .pipe(concat('app.js')) 
     .pipe(gulp.dest('public/assets/scripts')) 
     .pipe(rev()) 
     .pipe(gulp.dest('public/assets/scripts')) 
     .pipe(rev.manifest()) 
     .pipe(gulp.dest('public/assets/scripts')); 
}); 

ответ

0

во всех 3 вашей задачи вам нужно возвращать заявления

gulp.task('js-build-template', function() { 
    return gulp.src('./../app/assets/javascripts/**/*.jst.eco') 
     .pipe(eco({ basePath: 'app/assets/javascripts', namespace: 'JST_ATL' })) 
     .pipe(concat('_templates.js')) 
     .pipe(gulp.dest('public/assets/scripts/partials')); 
}); 

это поможет в разрешении окончательной задачи известно, что они закончили, и он должен начать ...

+0

Спасибо, entre, работает красиво! – Peter

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