gulp - 将args传递给runSequence中调用的任务

时间:2016-02-03 12:30:22

标签: javascript node.js gulp

我有一个像这样配置的gulp任务:

gulp.task('concatenate_client_js', function(){
  return merge2(
      gulp.src('./gulp/buildConfig.json')
        .pipe(plugins.ngConfig('app.envConfig', {
          environment: 'development'
        })
      ),
      gulp.src(paths.clientJS)
    )
    .pipe(plugins.concat('angular_app.js'))
    .pipe(gulp.dest(paths.distScripts));
});

然后在其他任务的runSequence中调用此任务(拆分不同的gulp文件)我喜欢这样:

gulp.task('prepare-dev-files', function(callback){
  runSequence('clean_dist_dir', 'copy_assets', 'copy_serverFiles', 'copy_bower_css',
  ['compile_bower_sass', 'concatonate_bower_js'],
  'compile_sass', 'concatenate_client_js', 'compile_main_js', callback);
});

gulp.task('prepare-staging-files',  ['prepare-dev-files'], function(callback) {
  runSequence('clean_test_src', 'copy_unitTestFiles', 'copy_files_for_coverage_report', 'karma_tests_ci', callback)
});

我希望能够根据提供给任务的args或params将environment配置选项设置为ngConfig任务中的concatenate_client_js插件。< / p>

我见过像yargs这样的工具,但我不确定如何在我的情况下使用。我希望能够在runSequence中为我的任务调用提供例如--mode development的arg,例如。

gulp.task('prepare-staging-files',  ['prepare-dev-files --mode staging'], function(callback) {
      runSequence('clean_test_src', 'copy_unitTestFiles', 'copy_files_for_coverage_report', 'karma_tests_ci', callback)
    });

然后根据传递给任务的mode参数添加一些切换代码。

这可以实现吗? 感谢

1 个答案:

答案 0 :(得分:3)

这是可以实现的。您可以使用yargs模块执行此操作。 argv模块的yargs属性可用于gulpfile.js中定义的所有gulp任务。这是一个例子:

var gulp   = require('gulp');

var args   = require('yargs').argv;

gulp.task('a', function() {
  console.log('Arguments for A: ', args.env);
});

gulp.task('b', function() {
  console.log('Arguments for B: ', args.env);
});

gulp.task('c', ['a', 'b'], function() {
  console.log('Arguments for C: ', args.env);
});

命令$ gulp c --env development给出以下输出:

  

14:42:01]开始'a'......

     

A:开发的论据

     

[14:42:01]在175μs后完成'a'

     

[14:42:01]从'b'开始...

     

B:发展的论据

     

[14:42:01]67μs后完成'b'

     

[14:42:01]从'c'开始...

     

C:开发的论据

     

[14:42:01]51μs后完成'c'