2017-05-04 17 views
8

ant에서 gulp으로 이동하는 중입니다. 노력의 일환으로 Graphite에 타이밍 통계를 쓰고 싶습니다. 우리는 ant에서이 작업을 수행하고 있습니다. 어쨌든 어떻게 그 옆에 있는지 알 수 없습니다. 내 질문은, 나는 우리가 가지고있는 모든 작업 (우리는 60 개가 있음)에 수동으로 플러그인을 추가 할 필요가 없으며 모든 종류의 전역 동작을 가지고있다. 모든 작업에 대해 작업이 실행되기 전에 타이머가 시작되고 신호가 완료되면 우리는 일부 데이터를 Graphite (statsd 이상)로 보냅니다.Gulp (측정 작업 기간 측정)에서 "전역"동작 정의

누군가가 올바른 방향으로 나를 가리켜 주면 어디에서 꿀꺽 꿀꺽 삼키는가? 문서/요리법에서 특히 유용한 것을 찾지 못했습니다 ...

We 're running [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 기능 :

새로운 통과 시간 스트림을 생성한다. 이 스트림이 으로 폐쇄되면 생성 된 이후의 시간이 터미널에 기록됩니다.

그러면 작업 기간을 기록 할 수 있습니다.

글로벌 동작 솔루션은 아니지만 최소한 60 개 이상의 작업을 모두 수정하지 않아도 gulp 파일에 타이밍 코드를 지정할 수 있습니다.