所以我尝试创建一个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']);
});
但这意味着重复的代码 任何人有解决方案或可能有一些建议?
提前致谢!
答案 0 :(得分: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
。