为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以将标志传递给Gulp以使其以不同方式运行任务?

是否可以将标志传递给Gulp以使其以不同方式运行任务?

慕无忌1623718 2019-11-21 11:01:58
通常在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));});
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超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 literature

Gulp 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

我的样式任务也有效。


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 686 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信