Node / Gulp同步删除任务中的目录

时间:2015-02-16 19:24:59

标签: node.js asynchronous build gulp synchronous

我有这样的任务:

gulp.task('test', function(){

  del('./build');

  gulp.src('./test/**/*')
    .pipe(gulp.dest('./build'));

});

本质上,这应该首先删除build目录,然后它应该将一堆文件复制到新的build目录。

我的问题:这两个命令是异步还是同步?在将文件复制到同一目录的新版本之前,del运行和完成显然很重要。

如果它们是异步的,那么如何让它们同步运行?是我唯一的选择,将它们分解为单独的任务,并使del任务依赖于"复制任务"?是否无法在单个任务中使流同步?

3 个答案:

答案 0 :(得分:2)

如果您确实要同步删除目录,可以直接使用fs

var fs = require('fs');

gulp.task('test', function(){

  fs.rmdirSync('./build');

  return gulp.src('./test/**/*')
    .pipe(gulp.dest('./build'));

});

答案 1 :(得分:0)

如果异步使用del(),可以这样做:

del('./build', function(err) {
  gulp.src('./test/**/*')
    .pipe(gulp.dest('./build'));
});

答案 2 :(得分:0)

似乎函数del.sync有效:

del.sync('./build');

documentation of "del" package