Gulp
在 4.0
版本开始,不再支持同步任务。
在同步模式下,Gulp
任务会阻塞整个进程直到任务完成,这可能会导致性能问题和不可预测的行为。
另外,同步任务还会在某些情况下导致构建工具出现死锁或崩溃。如果同步任务长时间运行或进入死循环,那么整个构建流程将被阻塞,可能导致构建工具无响应或崩溃。
而使用异步任务来代替同步任务,使用回调或 Promise
等方式实现异步操作,这样可以更好地控制任务执行的顺序和并发性,并且可以避免可能导致的性能问题和不稳定性。
在异步模式下,Gulp
任务必须返回一个 Promise
等异步方式或调用 callback
来指示任务完成。
当从任务(task
)中返回 stream
、promise
、event emitter
、child process
或 observable
时,成功或错误值将通知 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
)不返回 stream
或 promise
等异步模式,则必须使用 callback
来指示任务完成。
js
const { src, dest } = require('gulp')
function callbackTask(cb) {
// `cb()` should be called by some async work
cb()
}
exports.default = callbackTask