使用gulp作为构建工具时,我有一个奇怪的行为。我从另一个问题中得到了以下代码,该代码用于在再次运行之前清理构建文件:
function clean() {
var delResult = del(['build/**/*', 'dist/**/*']);
return delResult.then(del(['build', 'dist']));
}
gulp.task('clean', clean);
然后我有我的默认任务,该任务在其余的构建中包括clean任务:
gulp.task('default', gulp.series('clean', gulp.parallel('doJsStuff, doCssStuff', 'doEvenMoreStuff'));
问题在于,在两次删除操作完成之前,gulp已经继续进行构建。
据我了解,then
将返回一个承诺,并且当该承诺实现时,gulp应该继续。当然,then
承诺不能在第一个del
承诺之前实现。所以我想它应该能按预期工作,但不会。
行为在gulp 3和4中相同。
我知道我只用一次del
通话就可以做同样的事情:
function clean() {
return del(['build/**', 'dist/**']);
}
这实际上有效,并且是解决我的问题的方法。我仍然想理解,为什么链式承诺不起作用。有人可以告诉我吗?