吞下清洁文件夹然后创建文件夹

时间:2016-01-19 03:00:03

标签: gulp

我有一个非常简单的gulp任务,我试图完成:

gulpfile.js

gulp.task('build-dev', ['lint', 'jscs', 'clean-all', 'usemin'])

gulp.task('clean-all', function () {
    return gulp.src(config.dest, { read: false })
        .pipe(clean());
});

gulp.task('usemin', function () {
    return gulp.src('index.html')
      .pipe(usemin({
          css: [rev(), minifyCss, 'concat'],
          appjs: [uglify()],
          vendorjs: [uglify()]
      }))
      .pipe(gulp.dest(config.dest + '/'));
});

gulp.config.js

module.exports = function() {
var root = './app/';
var dest = './build/dist';
var bower = {
    json: require('./bower.json'),
    directory: './bower_components/'
};
var nodeModules = 'node_modules';

var config = {
    build: 'build/',
    root: root,
    dest: dest
};

return config;   

};

似乎当我运行此文件时,如果我在dist文件夹中有文件,那么它将成功清除文件,但不能完成usemin任务。如果我有一个干净的dist文件夹并运行它,那么它将完成usemin

我缺少什么,以便清除文件夹,然后重新创建它以将usemin文件再次放入其中?

2 个答案:

答案 0 :(得分:1)

似乎由于异步运行任务,您定义的任务不会同时运行。您应该尝试使用此answer上描述的任务来完成此链。

//fetch tasks
gulp.task('build-dev', ['lint', 'jscs', 'clean-all', 'usemin'])

gulp.task('clean-all', function () {
    return gulp.src(config.dest, { read: false })
        .pipe(clean());
});

//wait clean-all to exit
gulp.task('usemin', ['clean-all'], function () {
    return gulp.src('index.html')
      .pipe(usemin({
          css: [rev(), minifyCss, 'concat'],
          appjs: [uglify()],
          vendorjs: [uglify()]
      }))
      .pipe(gulp.dest(config.dest + '/'));
});

答案 1 :(得分:0)

我会在run-sequence模块中添加并用这样的内容替换build-dev任务。

var runSequence = require('run-sequence').use(gulp)
gulp.task('build-dev', function(cb){
  runSequence('clean-all', ['lint', 'jscs', 'usemin'], cb)
}

在删除文件时,您不希望其他任务正在运行。