2017-05-04 38 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因爲在吞吐(信息流完整,承諾解決,回調)中有多種信號完成方式,如果我正確地看到這一點,我將不得不考慮所有這些行爲。 – 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

創建一個新的穿通持續時間流。當此流爲 已關閉時,它會記錄自創建至您的 終端以來的時間量。

然後將允許您記錄任務的持續時間。

雖然這不是一個全局行爲解決方案,但至少您可以在您的gulp文件中指定計時代碼,而不必修改所有60個以上的任務。