4

タスクを使用してgulpビルド ファイルを使用すると便利ですwatch。私の場合、phpディレクトリの変更と変更時のリント/コピー、連結とコピーを行うJSディレクトリ、および変更時にCSSにコンパイルするSASSを監視するタスクがあります。

watch タスクを実行している別の git ブランチをチェックアウトすると、文字通り何百ものファイルが変更されるため、非常に予想外の事態になります。解決可能な問題の 1 つは、watch一般的なタスクをトリガーすることです。たとえば、PHP のタスクは、変更されたものだけでなく、すべての PHP ファイルを単純に再リントしてコピーします。したがって、50 個のファイルが変更されると、スタック全体が 50 回再リントされます。JS(依存関係のため)およびSASS(コンパスを実行し、すべてのファイルが変更されたと見なされるため)についても同様です。

したがって、現在の私の解決策は、watchタスク( Sublime Gulpを使用して実行されている)を強制終了し、新しいブランチをチェックアウトしてから再実行することです。プラグインを変更するか、プラグインの使用を停止する必要がある解決策があると思います-ターミナルのバックグラウンドでタスクを実行し、出力を表示できるようにするためSublime Gulpの簡単なショートカットがあれば問題ありませんが、watchそれを私に強制させないでください。

私は git にフックがあることを知っているので、別の解決策として、チェックアウト フックに監視タスクへの一時的な停止標識として機能するファイルを生成させるか、または同様のものを作成させることを想像しています。

誰もが使用して同様の問題を経験しましたがwatch、どのように解決することをお勧めしますか?

4

2 に答える 2

7

@Mushr00mの Gulp.js に対する回答で指定されているように、ファイルを保存するときにタスクが 2 回実行されるdebounceDelayのを監視します。に渡すことができるオプションがありますgulp.watch()

debounceDelay {integer} 同じファイル/イベントに対して連続して呼び出されるイベントの遅延

つまり、すべての変更が同時に発生する限り、 はdebounceDelay監視されたタスクをトリガーする前に待機します。私の経験では、通常、git は非常に高速であるため、開発ワークフローに影響を与える可能性があるか、ほとんど影響を与えずに をdebounceDelay設定できます。5001000

例:

gulp.watch('/**/*.less', {debounceDelay: 2000}, ['less']);

ドキュメントを掘り下げることで、これを確認できました。実際の機能は視線から来ます。

于 2014-12-21T15:01:01.920 に答える