是否可以将标志传递给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));

});


慕无忌1623718
浏览 655回答 3
3回答

白板的微信

gulp-util被弃用,并应避免,所以建议使用minimist代替,这gulp-util已被使用。所以我更改了gulpfile中的某些行以将其删除gulp-util:var argv = require('minimist')(process.argv.slice(2));gulp.task('styles', function() {  return gulp.src(['src/styles/' + (argv.theme || 'main') + '.scss'])    …});原版的在我的项目中,使用以下标志:gulp styles --theme literatureGulp gulp.env为此提供了一个对象。在较新的版本中不推荐使用,因此您必须使用gulp-util。任务如下所示:var util = require('gulp-util');gulp.task('styles', function() {  return gulp.src(['src/styles/' + (util.env.theme ? util.env.theme : 'main') + '.scss'])    .pipe(compass({        config_file: './config.rb',        sass   : 'src/styles',        css    : 'dist/styles',        style  : 'expanded'    }))    .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'ff 17', 'opera 12.1', 'ios 6', 'android 4'))    .pipe(livereload(server))    .pipe(gulp.dest('dist/styles'))    .pipe(notify({ message: 'Styles task complete' }));});在所有子任务中都可以使用环境设置。因此,我也可以在监视任务上使用此标志:gulp watch --theme literature我的样式任务也有效。
打开App,查看更多内容
随时随地看视频慕课网APP