具有先决条件的Gulp任务无法启动

时间:2016-11-22 13:03:41

标签: 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任务将运行。我做错了什么阻止了这种情况发生?

修改:问题似乎是concat任务的acecss部分中的css:minify(因为如果我注释掉那些线条一切正常),但我仍然无法理解为什么它阻止任务工作。

1 个答案:

答案 0 :(得分:0)

事实证明,这个问题与gulp-merge有关。当我将其更改为使用merge-stream时,一切都按预期工作。