我有以下基本的Gulp任务:
gulp.task('clean', function(){
return del('./build/public/js');
});
gulp.task('doSomething', ['clean'], function(){
console.log(fs.existsSync('./build/public/js'));
return gulp.src(..... // Do some stuff here
});
根据此,./build/public/js
任务首先删除目录clean
。这是同步运行的,因为我在该任务中使用return
。
接下来我的doSomething
任务所做的第一件事是打印出./build/public/js
目录是否存在。这应该是false
每次。
但有时我得到true
。我不知道为什么。如果是真的,这是我的输出:
[13:57:13] Using gulpfile /vhosts/website/gulpfile.js
[13:57:13] Starting 'clean'...
[13:57:13] Finished 'clean' after 30 ms
[13:57:13] Starting 'doSomething'...
true
[13:57:13] 'doSomething' errored after 196 ms
[13:57:13] Error: EEXIST, mkdir '/vhosts/website/build/public/js'
这里发生了什么?为什么我的结果不一致? clean
在doSomething
开始之前完成,因此该目录肯定会在此时完全删除。为什么它会返回true
,说该目录仍然存在?
答案 0 :(得分:0)
你需要帮助gulp了解任务何时完成:
gulp.task('clean', function(cb) {
del('./build/public/js', cb);
});
https://github.com/gulpjs/gulp/blob/master/docs/API.md#deps
注意:在依赖项完成之前,您的任务是否正在运行?确保您的依赖项任务正确使用异步运行提示:接受回调或返回承诺或事件流。