gulpfile Visual Studio 2015中的npm del error

时间:2015-09-23 15:16:53

标签: node.js gulp visual-studio-2015

我在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任务运行正常。

不要以为之前有人见过这个问题,并知道如何纠正它?

由于

1 个答案:

答案 0 :(得分:1)

我认为您遇到了与此user相同的错误:del模块不再使用回调,而是承诺。永远不会调用done,因此cleanimages任务会同时运行,从而导致错误。

你可以从干净的方法返回:

gulp.task('clean-images', function () {
    return clean(config.build + 'images/**/*.*');
});

function clean(path) {
    log('Cleaning: ' + $.util.colors.blue(path));
    return del(path);
}