Gulp 吞咽-使用参数启动任务

Gulp 吞咽-使用参数启动任务,gulp,Gulp,因此,我正在尝试创建一个gulp工作流,并且我想为一些任务实现一些选项,比如gulp copy images--changed。现在,我创建了一个监视任务,它显然监视所有的图像文件,并且应该使用--changed标志启动copy images 理想情况下,我想这样做: gulp.task('copy-images', function(){ // some code }); gulp.task('watch', function(){ gulp.watch(config.ima

因此,我正在尝试创建一个gulp工作流,并且我想为一些任务实现一些选项,比如
gulp copy images--changed
。现在,我创建了一个监视任务,它显然监视所有的图像文件,并且应该使用--changed标志启动
copy images

理想情况下,我想这样做:

gulp.task('copy-images', function(){
    // some code
});

gulp.task('watch', function(){
    gulp.watch(config.images, ['copy-images --changed']);
});
我也非常清楚我可以做到:

gulp.task('copy-images', function(){
    // some code
});

gulp.task('copy-images-changed', function(){
    // some code
});

gulp.task('watch', function(){
    gulp.watch(config.images, ['copy-images']);
});
但这意味着代码重复。
有人提出解决方案或建议吗


提前谢谢

Gulp不提供为任务指定选项的内置方式。您必须使用外部选项解析器模块,如。有关该主题的更多信息,请参阅

这也意味着将类似于
['copy-images--changed']
的内容传递到
gulp.watch()
将不起作用。整个字符串将仅解释为任务名称

对您来说,最好的方法是将任务的代码分解成一个函数,然后从任务和手表中调用此函数:

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

function copyImages(opts) {
  if (opts.changed) {
    // some code
  } else {
    // some other code
  }
}

gulp.task('copy-images', function() {
  copyImages(argv);
});

gulp.task('watch', function(){
    gulp.watch(config.images, function() {
      copyImages({changed:true});
    });
});
以上内容应涵盖您的所有基础:

  • 吞下复制图像
    将执行
    //其他一些代码
  • 吞下复制图像--changed
    将执行
    //一些代码
  • gulpwatch
    将在监视的文件更改时执行
    //某些代码

好的,我希望有其他解决方案,但无论如何,感谢您给出了澄清的答案。;-)