2016-11-22 24 views
0

我有一個任務取決於先前的任務,它合併多個流並返回結果流。依賴於它的任務似乎永遠不會運行。帶先決條件的Gulp任務不啓動

這是我的依賴:

var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var sourcemaps = require('gulp-sourcemaps'); 
var less = require('gulp-less'); 
var minifyCss = require('gulp-minify-css'); 
var merge = require('gulp-merge'); 
var cached = require('gulp-cached'); 

gulp.task('css:minify', function() { 
    var bootstrapLess = gulp.src(['plugins/bootstrap/less/bootstrap.less']) 
     .pipe(cached('bootstrap less')) 
     .pipe(less()) 
     .pipe(gulp.dest('plugins/bootstrap/less/')); 

    var aceLess = gulp.src(['plugins/ace-admin/less/ace.less']) 
     .pipe(cached('ace less')) 
     .pipe(less()) 
     .pipe(gulp.dest('plugins/ace-admin/less/')); 

    var ace = gulp.src(files.css.ace) 
     .pipe(cached('ace min')) 
     .pipe(sourcemaps.init()) 
     .pipe(minifyCss()) 
     .pipe(concat('aes.ace.min.css')) 
     .pipe(sourcemaps.write('./')) 
     .pipe(gulp.dest('Content/')); 

    var css = gulp.src(files.css.all) 
     .pipe(cached('aes.min')) 
     .pipe(sourcemaps.init()) 
     .pipe(minifyCss()) 
     .pipe(concat('aes.all.min.css')) 
     .pipe(sourcemaps.write('./')) 
     .pipe(gulp.dest('Content/')); 

    console.log('css minification in progress'); 

    return merge(bootstrapLess, aceLess, ace, css); 
});  

使用它們如下任務:

gulp.task('test', ['css:minify'], function() { 
    console.log('testing'); 
}); 

我得到以下輸出:

[14:32:53] Starting 'css:minify'... 
css minification in progress 
Process terminated with code 0. 

css:minify任務永遠不會報告它已完成,並且test任務不會將任何內容記錄到控制檯。我的期望是依賴關係會返回一個流,並且test任務將在流完成時運行。我做了什麼錯誤防止了這種情況的發生?

編輯:看來,問題是css:minify任務acecss段內的concat(因爲如果我註釋掉這些行一切工作正常),但我還是不明白爲什麼它可防止工作任務。

+0

當你的代碼的一半是'doStuff'和'doMoreStuff'時,沒有辦法回答這個問題。 –

+0

有趣的是,我想我一定誤解了我如何設置測試任務。我會填寫示例的細節,謝謝。 – Tim

回答

0

事實證明,問題與gulp-merge有關。當我將其改爲使用merge-stream時,所有操作都按預期工作。