Gulp任务未运行-改为其他任务的回调

Gulp任务未运行-改为其他任务的回调,gulp,Gulp,我有一个任务是这样的: var gulp = require('gulp'); gulp.task('doStuff', ['a', 'b', 'c'], function () { console.log("success"); }); 我已经读过,从我的理解来看,这是应该发生的事情: gulp创建一个名为doStuff的任务 gulp异步运行任务a、b和c 在上述三个任务全部完成后,gulp运行我为doStuff定义的函数 这就是实际发生的情况: gulp创建一个名为doSt

我有一个任务是这样的:

var gulp = require('gulp');
gulp.task('doStuff', ['a', 'b', 'c'], function () {
    console.log("success");
});
我已经读过,从我的理解来看,这是应该发生的事情:

  • gulp创建一个名为doStuff的任务
  • gulp异步运行任务a、b和c
  • 在上述三个任务全部完成后,gulp运行我为doStuff定义的函数
这就是实际发生的情况:

  • gulp创建一个名为doStuff的任务
  • gulp异步运行任务a、b和c
  • gulp表示它已成功运行doStuff任务,但没有运行我作为gulp.task方法的第三个参数传递的函数
我惊讶地发现,如果我在其他函数中接受回调,那么这个回调就是我的函数。即,如果我这样做:

var gulp = require('gulp');
gulp.task('a', function (callback) {
    callback();
});
这将运行我的代码

我希望我的函数只执行一次,并且只能在所有其他任务运行之后执行。我遗漏了什么,或者误解了什么?我能做什么

顺便说一句,这可能是相关的:我的大多数其他任务都会生成文件,它们会返回这样的文件。比如:

var gulp = require('gulp');
var rename = require('gulp-rename');
var someLogic = require('someLogicIImplementedSomewhereElse');
var path = "../../somepath";

gulp.task('foo', function() {
    return gulp.src(path)
        .pipe(someLogic())
        .pipe(rename("renamed.js"))
        .pipe(gulp.dest(path));
});

确保a、b和c返回某个内容或执行回调

请尝试以下示例:

gulp.task('a', function (done) {
    done();
});

gulp.task('b', function (done) {
    return gulp.src('.');
});

gulp.task('c', function (done) {
    done();
});

gulp.task('stuff', ['a', 'b', 'c'], function () {
    console.log("success");
});
这是
吞下东西的输出

- Starting 'a'...
- Finished 'a' after 48 μs
- Starting 'b'...
- Starting 'c'...
- Finished 'c' after 6.03 μs
- Finished 'b' after 9.14 ms
- Starting 'stuff'...
- success
- Finished 'stuff' after 38 μs

a
b
c
看起来像什么?他们回来了吗?@Davidtroon他们回来了。我已经编辑了我的问题,添加了一个示例。我有一个新手问题,如何通过cli传递“done”函数?这就像承诺链一样吗?看起来是这样的,那么。