Gulp clean会产生不一致的结果

时间:2015-02-16 21:05:02

标签: node.js gulp

我有以下基本的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'

这里发生了什么?为什么我的结果不一致? cleandoSomething开始之前完成,因此该目录肯定会在此时完全删除。为什么它会返回true,说该目录仍然存在?

1 个答案:

答案 0 :(得分:0)

你需要帮助gulp了解任务何时完成:

gulp.task('clean', function(cb) {
  del('./build/public/js', cb);
});

https://github.com/gulpjs/gulp/blob/master/docs/API.md#deps

  

注意:在依赖项完成之前,您的任务是否正在运行?确保您的依赖项任务正确使用异步运行提示:接受回调或返回承诺或事件流。