2017-05-04 11 views
8

私はantからgulpに移動しています。努力の一環として、Graphiteにタイミングの統計情報を書きたいと思います。私たちはantでもこれをやっています(とにかく、どのようにしてポイントのそばに)。私の質問は、私たちが持っているすべてのタスク(私たちは60を超えている)に手動でプラグインを追加する必要はなく、何らかのグローバルな振る舞いを持っていることです。タイマーが開始され、完了を知らせると、いくつかのデータがGraphite(statsd経由)に送られます。Gulpでのグローバルな振る舞いの定義(作業時間測定)

誰かが正しい方向に私を向けることができますか?ドキュメント/レシピで特に役立つものは何も見つかりませんでした。

私たちは[email protected]を実行しています。

+0

自分のロジックでgulp.taskを上書きしないのはなぜですか? –

+0

'gulp'は内部イベントを公開する[' orchestrator'モジュール](https://github.com/robrich/orchestrator)に依存しています。したがって、 'gulp.on(" task_stop "、...)'を実行し、各タスクの完了イベントを聞くことができます。私はそれが良い習慣だとは思わないが、技術的に実行可能である。 – MarcoL

+0

@ elad.chen gulp(ストリームの完了、約束の解決、コールバック)で完了を通知する方法が複数あるので、これを正しく見るとこれらのすべての動作を考慮する必要があります。 – Steven

答えて

0

多くのタスクにタイミングコードを追加する代わりに、NPM gulp-durationパッケージを使用できます。

それの使用の一例の抜粋を以下に示す:

function rebundle() { 
var uglifyTimer = duration('uglify time') 
var bundleTimer = duration('bundle time') 

return bundler.bundle() 
    .pipe(source('bundle.js')) 
    .pipe(bundleTimer) 
    // start just before uglify recieves its first file 
    .once('data', uglifyTimer.start) 
    .pipe(uglify()) 
    .pipe(uglifyTimer) 
    .pipe(gulp.dest('example/')) 
} 

グッ持続時間のduration機能:

新しいパススルー継続ストリームを作成します。このストリームが 閉鎖されている場合、作成後の時間が 端末に記録されます。

タスクの期間を記録することができます。

これはグローバルな動作の解決策ではありませんが、少なくとも60以上のタスクを変更するのではなく、gulpファイルにタイミングコードを指定することは可能です。

関連する問題