2016-04-15 52 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

好的,我希望有一些其他的解決方案,但無論如何謝謝澄清的答案。 ;-) –