我的任务是这样的:
var gulp = require('gulp');
gulp.task('doStuff', ['a', 'b', 'c'], function () {
console.log("success");
});
我已阅读docs,根据我的理解,这是应该发生的事情:
这是实际发生的事情:
我很惊讶地发现,如果我接受其他函数中的回调,那回调就是我的函数。即如果我这样做:
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));
});
答案 0 :(得分:3)
确保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");
});
以下是gulp stuff
- 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