2015-05-03 79 views
1

有一口任務:如何使用參數進行吞嚥任務?

gulp.task('copy-bower-components-to-dev', function() { 
    gulp.src('./app/bower_components/**') 
    .pipe(gulp.dest('dev/bower_components')); 
}); 

我還需要另一個文件夾相同的任務:

gulp.task('copy-bower-components-to-prod', function() { 
    gulp.src('./app/bower_components/**') 
    .pipe(gulp.dest('prod/bower_components')); 
}); 

但它不是一個乾淨的代碼;我怎樣才能用params來完成一個吞噬任務(在這種情況下,帶有文件夾名稱的參數)?提前致謝!

+0

你可以把它的參數-dev或-prod http://stackoverflow.com/questions/23023650/is-it-possible-to-pass-a-flag-to-gulp-to-擁有它運行的任務在不同的方式 –

回答

2

gulp-utils實際上是爲這個完美的:

var gutil = require('gulp-util'); 

function destination() { 
    return (!!gutil.env.type && gutil.env.type == 'prod' ? 'prod' : 'dev'; 
} 

gulp.task('copy-bower-components', function() { 
    return gulp.src('./app/bower_components/**') 
    .pipe(gulp.dest(destination() + '/bower_components')); 
}); 

gulp --type=prod運行設置新的文件夾!

+0

謝謝!有用!另外,我可以在默認情況下爲任務設置一些標誌嗎?例如,對於這個任務:gulp.task('build-dev',['translate-sass','translate-coffee','translate-slim','copy-bower-components','connect']) – malcoauri

+0

我更新了答案,使其更安全:目標的默認值是該例中的'dev'' - 它應該適用於其他標誌以及;-) – ddprrt

0

你可以試試這個插件gulp-foal與param運行一個馬駒任務。

param NOT from cmd。

'use strict'; 

var gulp = require('gulp'); 
var clean = require('gulp-clean'); 
var foal = require('gulp-foal'); 

//use "foal.task(...)" to define a foal-task. 
foal.task('clean_some', function(cleanPath) { 
    //"return" shall not be missed for running foal-task orderly. 
    return gulp.src(cleanPath) 
    .pipe(clean()); 
}); 

gulp.task('default', function(cb) { 
    //use "foal.run(...)" to run your foal-task with param. 
    foal.run(clean_some('test_path'), cb); 
});