我在gulpfile中使用del包作为清理任务的一部分。
以下是我正在使用的内容版本 Visual Studio 2015社区 Node.js v2.11.3 gulp v3.9.0 del v2.0.2
这是我的gulp文件的摘录:
var gulp = require('gulp');
var del = require('del');
var config = require('./gulp.config')();
var $ = require('gulp-load-plugins')({ lazy: true });
gulp.task('images', ['clean-images'], function () {
log('Copying and compressing the images');
return gulp
.src(config.images)
.pipe($.imagemin({optimizationLevel: 4}))
.pipe(gulp.dest(config.build + 'images'));
});
gulp.task('clean-images', function (done) {
clean(config.build + 'images/**/*.*', done);
});
function clean(path, done) {
log('Cleaning: ' + $.util.colors.blue(path));
del(path, done);
}
当我使用images
从命令提示符运行任务gulp images
时,clean-images
任务执行但从未完成。它出错了:
[16:10:45] Using gulpfile ~\Documents\Visual Studio 2015\Projects\**\Gulpfile.js
[16:10:46] Starting 'clean-images'...
[16:10:46] Cleaning: build/images/**/*.*
Process terminated with code 0.
因此,images
任务的其余部分无法执行。
当我删除images
依赖项时,clean-images
任务运行正常。
不要以为之前有人见过这个问题,并知道如何纠正它?
由于
答案 0 :(得分:1)
我认为您遇到了与此user相同的错误:del
模块不再使用回调,而是承诺。永远不会调用done
,因此clean
和images
任务会同时运行,从而导致错误。
你可以从干净的方法返回:
gulp.task('clean-images', function () {
return clean(config.build + 'images/**/*.*');
});
function clean(path) {
log('Cleaning: ' + $.util.colors.blue(path));
return del(path);
}