在默认情况下引用两个gulp任务

在默认情况下引用两个gulp任务

问题描述:

我有一个“默认”任务,我想在gulp继续构建我的缩小CSS和JS之前清理文件夹。每个默认任务只需运行一次“干净”任务。但我有问题试图获取默认任务来引用真正的构建任务。 因此,这里是我的gulpfile:在默认情况下引用两个gulp任务

var gulp = require('gulp'); 

    // including our plugins 
    var clean = require('gulp-clean'); 
    var less = require('gulp-less'); 
    var util = require('gulp-util'); 
    var lsourcemaps = require('gulp-sourcemaps'); 
    var rename = require('gulp-rename'); 
    var filesize = require('gulp-filesize'); 
    var ugly = require('gulp-uglify'); 
    var path = require('path'); 
    var plumber = require('gulp-plumber'); 
    var minifyCSS = require('gulp-minify-css'); 
    var concat = require('gulp-concat'); 
    // DEFAULT TASK 
    gulp.task('default', ['clean'], function() { 
    .pipe(gulp.task('vendor')) 
    .pipe(gulp.task('css')) 
}); 
    // strips public folder for a build operation nice and clean ** obliterates! ** 
    gulp.task('clean', function() { 
     return gulp.src('public/**', {read: false}) 
     .pipe(clean()); 
    }); 
    // javascript vendor builds 
    gulp.task('vendor', function() { 
     return gulp.src(['bower_comps/angular/angular.js', 'bower_comps/angular-bootstrap/ui-bootstrap.js', 'bower_comps/angular-bootstrap/ui-bootstrap-tpls.js']) 
     //.pipe(filesize()) 
     .pipe(ugly()) 
     .pipe(concat('vendor.min.js')) 
     .pipe(gulp.dest('public/js')) 
    }); 
    // builds CSS 
    gulp.task('css', function() { 
     return gulp.src('bower_comps/bootstrap-less/less/bootstrap.less') 
     .pipe(lsourcemaps.init()) 
     .pipe(plumber({ 
      errorHandler: function(err) { 
       console.log(err); 
       this.emit('end') 
      } 
     })) 
     .pipe(less({ 
      paths: [path.join(__dirname, 'less', 'includes')] 
     })) 
     .pipe(minifyCSS()) 
     .pipe(rename('site.min.css')) 
     .pipe(lsourcemaps.write('./maps')) 
     .pipe(gulp.dest('public/css/')) 
     .pipe(filesize()) 
    }); 

因此,如何我要对这个错误的?每个单独的任务都可以自行运行,只需要“gulp css”,“gulp vendor”。就在我将它们放入一个默认任务(主任务)时,带着我的干净“先决条件”任务,遇到问题。

托尼

尝试这些为你的任务:

gulp.task('clean', function() { 
    // Insert cleaning code here 
}); 

gulp.task('vendor', ['clean'], function() { 
    // Insert your 'vendor' code here 
}); 

gulp.task(‘css’, ['clean'], function() { 
    // insert your 'css' code here 
}); 

gulp.task('build', [‘vendor’, ‘css’]); 

gulp.task('default', ['build']); 

只有'clean'完成后,'vendor'和'css'才会同时运行。尽管是'vendor'和'css'的先决条件,'clean'只会运行一次。

+0

谢谢你们。你们两人都是一样的。真棒。我一直在想,每次调用css或vendor时,'clean'都会运行。我今天学到了东西。 – 2015-02-18 15:55:08

,当你调用默认的任务的问题IST,吞掉随机选择任务的顺序:

gulp.task('default', ['clean', 'move', 'scripts', 'css']); 

为了解决这个问题,每个任务应该有相关性。例如,move任务应在清理任务之后执行。所以move TAKS应该是这样的:

gulp.task('move', ['clean'], function() { //your code } 

更多的解释:https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulptaskname-deps-fn

对不起我的英文不好:-)