2016-04-15 58 views
2

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

理想情况下,我想要做这样的事情:

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

但这意味着重复的代码。
任何人有解决方案或可能一些建议?

在此先感谢!

回答

2

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

这也意味着通过类似['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}); 
    }); 
}); 

上面应覆盖所有客户群的:

  • gulp copy-images将执行//some other code
  • gulp copy-images --changed将执行//some code
  • gulp watch执行//some code任何时候观看的文件被改变。
+0

好的,我希望有一些其他的解决方案,但无论如何谢谢澄清的答案。 ;-) –