2016-01-19 73 views
1

我有我試圖完成一個非常簡單的任務,一飲而盡:咕嘟咕嘟乾淨的文件夾,然後創建文件夾

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文件呢?

回答

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 + '/')); 
}); 
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) 
} 

您不希望在刪除文件時運行其他任務。