11

gulp.taskgulpfile.js 中定义了几个任务:

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

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

如何才能做到这一点?

看起来有类似gulp.runand的东西gulp.start,但它们在 Gulp 4 中已被弃用。

4

3 回答 3

14

似乎可以使用gulp.taskgetter 函数检索任务并直接调用:

gulp.task('sync-task')();
gulp.task('async-or-random-task')(function callbackForAsyncTasks(err) {
  if (err)
    console.error('error', err);
});
于 2017-02-15T20:27:15.807 回答
11

添加到接受的答案:

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

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 上进行了测试。

于 2019-08-23T16:25:58.080 回答
0

我可以通过这样做来运行任务:

gulp.task('sync-task').unwrap()();
于 2019-07-10T18:20:56.127 回答