Source: Is it possible to pass a flag to Gulp to have it run tasks in different ways?
Yargs
Gulp doesn’t offer any kind of util for that, but you can use one of the many command args parsers. I like yargs. Should be:
1 2 3 4 5 6 7 8 9 |
var argv = require('yargs').argv; gulp.task('my-task', function() { return gulp.src(argv.a == 1 ? options.SCSS_SOURCE : options.OTHER_SOURCE) .pipe(sass({style:'nested'})) .pipe(autoprefixer('last 10 version')) .pipe(concat('style.css')) .pipe(gulp.dest(options.SCSS_DEST)); }); |
Combinaison de Yargs et de Gulp-if
You can also combine it with gulp-if to conditionally pipe the stream, very useful for dev vs. prod building:
1 2 3 4 5 6 7 8 9 10 11 12 |
var argv = require('yargs').argv, gulpif = require('gulp-if'), rename = require('gulp-rename'), uglify = require('gulp-uglify'); gulp.task('my-js-task', function() { gulp.src('src/**/*.js') .pipe(concat('out.js')) .pipe(gulpif(argv.production, uglify())) .pipe(gulpif(argv.production, rename({suffix: '.min'}))) .pipe(gulp.dest('dist/')); }); |
And call with gulp my-js-task
or gulp my-js-task --production
.
Remarque: selon les cas, on peut vouloir n’exécuter une tâche que dans le cas ou l’argument --dev
n’a pas été précisé. Il suffit de mettre un caractère !
(signifiant « différent de ») devant la condition:
1 |
.pipe(plugins.if(!argv.dev, plugins.uglify())) |
Autre alternative (moins pratique, mais qui fonctionne aussi) : gulp-options.