Gulp抱怨运行clean& amp;部署任务

时间:2016-08-04 18:05:00

标签: gulp gulp-watch

我在项目中设置了以下gulp任务。一切顺利,直到我添加dist:images任务。

现在,使用dist:watch任务时每次运行都会导致错误

Error: EEXIST: file already exists, mkdir '/Users/toby/src/my-project/dist/imgs'

我可以看到干净的任务在其他任务开始之前完成。我还测试过没有其他任务正在创建该文件夹...那么dist:images任务怎么创建这个目录然后抱怨它呢??!

这是代码......

/**
 * dist:clean
 */
gulp.task('dist:clean', function () {
    del(config.distDir + "/**/*");
});

gulp.task('dist:html', ['dist:clean'], function () {
    return gulp.src(config.htmlFiles)
        .pipe(gulp.dest(config.distDir));
});

gulp.task('dist:images', ['dist:clean'], function () {
    return gulp.src(config.imgFiles, {base: "web"})
        .pipe(gulp.dest(config.distDir));
});

gulp.task('dist:styles', ['dist:clean'], function () {
    console.log(config.lessMainFile);
    return gulp.src(config.lessMainFile)
        .pipe(debug())
        .pipe(less().on('error', function (err) {
            console.log(err);
        }))
        .pipe(cssmin().on('error', function (err) {
            console.log(err);
        }))
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest(config.distDir + "/css"));
});

gulp.task('dist:src', ['dist:clean', 'src']);

/**
 * dist:browserify
 */
gulp.task("dist:browserify", ['dist:src'], function () {
    return browserify({
        basedir     : '.',
        debug       : true,
        entries     : [config.buildJsDir + '/src/main.js'],
        cache       : {},
        packageCache: {}
    })
        .bundle()
        .pipe(source('js/main.js'))
        .pipe(gulp.dest(config.distDir));
});

gulp.task('dist', ['dist:html', 'dist:images', 'dist:styles', 'dist:src', 'dist:browserify']);


gulp.task('dist:watch', ['dist'], function () {
    return gulp.watch(config.srcAllTypeScript.concat(config.webDir + "/**/*"), ['dist']);
});

感谢您的提前帮助

1 个答案:

答案 0 :(得分:-1)

解决方案与gulp和watch任务密切相关。 每次文件在每个任务中发生更改时都会删除config.imgFiles目录,并且每次文件更改时也会创建文件夹,因此最终会出现OS系统竞争状态。

这个dist:clean任务仅在构建的初始阶段使用。

/**
 * dist:clean
 */
gulp.task('dist:clean', function () {
    del(config.distDir + "/**/*");
});

gulp.task('dist:html', function () {
    return gulp.src(config.htmlFiles)
        .pipe(gulp.dest(config.distDir));
});

gulp.task('dist:images', function () {
    return gulp.src(config.imgFiles, {base: "web"})
        .pipe(gulp.dest(config.distDir));
});

gulp.task('dist:styles', function () {
    console.log(config.lessMainFile);
    return gulp.src(config.lessMainFile)
        .pipe(debug())
        .pipe(less().on('error', function (err) {
            console.log(err);
        }))
        .pipe(cssmin().on('error', function (err) {
            console.log(err);
        }))
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest(config.distDir + "/css"));
});

gulp.task('dist:src', function() {
  // I did not see any `dist:src` task, so I added a placeholder
});

/**
 * dist:browserify
 */
gulp.task('dist:browserify', function () {
    return browserify({
        basedir     : '.',
        debug       : true,
        entries     : [config.buildJsDir + '/src/main.js'],
        cache       : {},
        packageCache: {}
    })
        .bundle()
        .pipe(source('js/main.js'))
        .pipe(gulp.dest(config.distDir));
});

gulp.task('dist', ['dist:html', 'dist:images', 'dist:styles', 'dist:src', 'dist:browserify']);


gulp.task('dist:watch', ['dist'], function () {
    return gulp.watch(config.srcAllTypeScript.concat(config.webDir + "/**/*"), ['dist']);
});

gulp.task('build', ['dist:clean', 'dist', 'dist:watch']);
相关问题