【问题标题】:Copy/Deletion in Gulp randomly gives ENOENTGulp 中的复制/删除随机给出 ENOENT
【发布时间】:2015-12-30 19:30:52
【问题描述】:

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

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

删除构建

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

ma​​keBuild

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

谁能告诉我如何最好地解决这个问题?我希望寻求一种低层次的理解,而不是被展示一个没有解释的解决方案。谢谢。

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

【问题讨论】:

标签: gulp


【解决方案1】:

这可能是因为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 的 gulpfile。这对我有用 ;-)

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    相关资源
    最近更新 更多