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
,假设它会执行删除并且只有在完成后才会继续执行下一个任务,尽管这似乎并不是正在发生的事情。
答案 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文件。这对我有用; - )