Gulp中的复制/删除随机给出了ENOENT

时间:2015-10-02 14:39:43

标签: gulp

Gulp的新手。我的default任务正在使用插件run-sequence来告诉任务deleteBuild,然后makeBuild

随机地,我收到ENOENT错误,这似乎告诉我,我要么引用不存在要删除或复制的文件。我的任务是:

deleteBuild

gulp.task('deleteBuild', function(done) {
  var del = require('del');
  del(['build/**/*'], done);
});

makeBuild

gulp.task('makeBuild', function() {
  var stream = gulp.src(['src/**/*'], { base: 'src/' })
    .pipe(gulp.dest('build/');
});

有人可以告诉我如何最好地解决这个问题吗?我希望寻求低级别的理解,而不是通过解释来展示解决方案。感谢。

除了 :我在没有回调函数的情况下尝试了deleteBuild,假设它会执行删除并且只有在完成后才会继续执行下一个任务,尽管这似乎并不是正在发生的事情。

1 个答案:

答案 0 :(得分:0)

这可能是因为deleteBuild没有返回gulp流,从而导致管道损坏。我建议如下:

gulp.task('deleteBuild', function() {
  var del = require('del');
  var vinylPaths = require('vinyl-paths');

  return gulp.src(['build']) // no need for glob, just delete the build directory
    .pipe(vinylPaths(del));
});

gulp.task('makeBuild', function() {
  var stream = gulp.src(['src/**/*'], { base: 'src/' })
    .pipe(gulp.dest('build/');
});

gulp.task('default', function(cb) {
  var runSequence = require('run-sequence');

  runSequence('deleteBuild', ['makeBuild'], cb);
});

在执行build任务之前,这些任务将首先删除makeBuild目录。

您需要安装一个额外的插件:

npm install vinyl-paths

对于即用型示例,请查看skeletonSPA的gulp文件。这对我有用; - )