我正在努力创建一个除了调用自定义函数之外什么都不做的Gulp任务。不,我有,没有源文件,不,我没有目标文件。我只是想在一个独立的任务中调用一个自定义函数,所以我可以根据它来完成其他任务。
为了爱我,我检查了Google和SO,我找不到一个例子。我最接近的是这个
var through = require('through2');
gulp.task(
'my-custom-task',
function ()
{
return through.obj(
function write(chunk, enc, callback) {
// here is where the custom function is called
myCustomFunction('foo', 'bar');
callback(null, chunk);
}
);
}
);
现在这会调用myCustomFunction
,但是当我使用gulp my-custom-task
运行任务时,我可以看到任务已启动但尚未完成。
[10:55:37] Starting 'clean:tmp'... [10:55:37] Finished 'clean:tmp' after 46 ms [10:55:37] Starting 'my-custom-task'...
我应该如何正确地编写我的任务?
答案 0 :(得分:7)
如果你只想要一个运行某些功能的任务,那就这样做:
gulp.task('my-custom-task', function () {
myCustomFunction('foo', 'bar');
});
如果你的函数异步执行某些操作,它应该在最后调用一个回调,所以gulp能够知道它何时完成:
gulp.task('my-custom-task', function (callback) {
myCustomFunction('foo', 'bar', callback);
});
至于为什么您的解决方案不起作用,使用through
是一种使用流的方法。您可以使用它来创建可以.pipe()
进入gulp流的处理程序。由于您实际上没有使用gulp流,因此您无需创建流处理程序和/或通过此处使用。