Gulp にフラグを渡して、さまざまな方法でタスクを実行させることは可能ですか? 質問する

Gulp にフラグを渡して、さまざまな方法でタスクを実行させることは可能ですか? 質問する

通常、Gulp のタスクは次のようになります。

gulp.task('my-task', function() {
    return gulp.src(options.SCSS_SOURCE)
        .pipe(sass({style:'nested'}))
        .pipe(autoprefixer('last 10 version'))
        .pipe(concat('style.css'))
        .pipe(gulp.dest(options.SCSS_DEST));
});

gulpにコマンドラインフラグ(タスクではない)を渡して、それに基づいて条件付きでタスクを実行させることは可能ですか?例えば

$ gulp my-task -a 1

そして、gulpfile.js では次のようになります。

gulp.task('my-task', function() {
        if (a == 1) {
            var source = options.SCSS_SOURCE;
        } else {
            var source = options.OTHER_SOURCE;
        }
        return gulp.src(source)
            .pipe(sass({style:'nested'}))
            .pipe(autoprefixer('last 10 version'))
            .pipe(concat('style.css'))
            .pipe(gulp.dest(options.SCSS_DEST));
});

ベストアンサー1

Gulpにはそのためのユーティリティはありませんが、多くのコマンド引数パーサーの1つを使用することができます。私はyargs正しくは:

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));
});

組み合わせることもできますgulp-if条件付きでストリームをパイプします。開発と本番の構築に非常に便利です。

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

gulp my-js-taskまたはで呼び出しますgulp my-js-task --production

おすすめ記事