2016-04-15 7 views
2

私はGulpワークフローを作成しようとしており、gulp copy-images --changedのようないくつかのタスクのオプションを実装したいと思います。今、私は明らかにすべてのイメージファイルを監視するウォッチタスクを作成しました。それはcopy-imagesを--changedフラグで開始する必要があります。Gulp - 引数付きタスクを開始

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.task('copy-images', function(){ 
    // some code 
}); 

gulp.task('watch', function(){ 
    gulp.watch(config.images, ['copy-images --changed']); 
}); 

は理想的には、私はこのような何かをしたいです。
解決方法はありますか?

ありがとうございます!

答えて

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

他の解決策があることを願っていましたが、解決策を明確にするためにとにかく感謝しています。 ;-) –

関連する問題