Skip to content

Gulp4.0 版本开始,不再支持同步任务

在同步模式下,Gulp 任务会阻塞整个进程直到任务完成,这可能会导致性能问题和不可预测的行为。

另外,同步任务还会在某些情况下导致构建工具出现死锁或崩溃。如果同步任务长时间运行或进入死循环,那么整个构建流程将被阻塞,可能导致构建工具无响应或崩溃。

而使用异步任务来代替同步任务,使用回调或 Promise 等方式实现异步操作,这样可以更好地控制任务执行的顺序和并发性,并且可以避免可能导致的性能问题和不稳定性。

在异步模式下,Gulp 任务必须返回一个 Promise 等异步方式或调用 callback 来指示任务完成。

当从任务(task)中返回 streampromiseevent emitterchild processobservable 时,成功或错误值将通知 gulp 是否继续执行或结束。

如果任务(task)出错,gulp 将立即结束执行并显示该错误。

stream

通过 src 方法返回 stream

js
const { src, dest } = require('gulp')

exports.default = function() {
  return src('src/*.js')
    .pipe(dest('output/'))
}

promise

返回一个 promise

js
const { src, dest } = require('gulp')

function promiseTask() {
  return Promise.resolve('the value is ignored')
}

exports.default = promiseTask

callback

如果任务(task)不返回 streampromise 等异步模式,则必须使用 callback 来指示任务完成。

js
const { src, dest } = require('gulp')

function callbackTask(cb) {
  // `cb()` should be called by some async work
  cb()
}

exports.default = callbackTask