定义Gulp中的"全局"行为(测量任务持续时间)

Ste*_*ven 8 ant graphite statsd gulp

我正在努力将我们从一ant开始gulp,并且作为努力的一部分,我想将时间统计数据写入Graphite.我们也是这样做的ant(不知道如何,除此之外).我的问题是,我宁愿不必手动为我们拥有的每个任务添加一些或其他插件(我们有超过60个),而是有某种全局行为,每个任务,在任务运行之前计时器启动,当它表示完成时,我们将一些数据推送到Graphite(通过statsd).

有人能指出我正确的方向在哪里勾住gulp为此?我在文档/食谱中找不到任何特别有用的东西......

我们正在跑步gulp@4.

Ben*_*ith 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/'))
}
Run Code Online (Sandbox Code Playgroud)

gulp-duration 的持续时间函数:

创建新的传递持续时间流。当该流关闭时,它会将自创建以来的时间记录到您的终端。

然后将允许您记录任务的持续时间。

虽然这不是一个全局行为解决方案,但至少您可以在 gulp 文件中指定计时代码,而不是必须修改所有 60 多个任务。