运行 Gulp 4 任务编程

Run Gulp 4 task programmatically

在gulpfile.js中用gulp.task定义了几个任务:

gulp.task('sync-task', () => { ... });
gulp.task('async-task', cb => { ... });

我想以编程方式启动其中一个。最好在同一个进程中(没有 exec 等),因为这背后的原因之一是能够 运行 调试器中的脚本。

如何做到这一点?

看起来像 gulp.rungulp.start 之类的东西,但它们在 Gulp 4.

中被弃用了

看来可以用gulp.taskgetter函数检索任务并直接调用:

gulp.task('sync-task')();
gulp.task('async-or-random-task')(function callbackForAsyncTasks(err) {
  if (err)
    console.error('error', err);
});

我可以通过这样做 运行 完成一项任务:

gulp.task('sync-task').unwrap()();

添加到已接受的答案中:

是的,您可以通过调用 gulp.task 来检索任务,但您可以将其包装在对 gulp.series 的调用中而不是直接调用它(大概 gulp.parallel 也可以)并且调用 that。这有利于产生预期的 "Starting/Finished" 输出。一个例子是:

gulp.series(gulp.task('some-task'))();

输出:

[09:18:32] Starting 'some-task'...
[09:18:32] Finished 'some-task' after 7.96 ms

这刚刚在 gulp v4.0.2 上测试过。