每次更改观看的文件时,chokidar 都会变慢

chokidar slows down every time watched files are changed

我使用 gulp 进行构建设置,并使用 chokidar 来侦听文件更改:

var buildWatcher = chokidar.watch(paths, { ignoreInitial: true });

buildWatcher
    .on('add', function(filePath) {
        gulpUtil.log("File event: " + gulpUtil.colors.cyan(path.basename(filePath) + ' add'));
        gulp.start(key + suffix);
    })
    .on('change', function(filePath) {
        gulpUtil.log("File event: " + gulpUtil.colors.cyan(path.basename(filePath) + ' change'));
        gulp.start(key + suffix);
    })
    .on('unlink', function(filePath) {
        gulpUtil.log("File event: " + gulpUtil.colors.cyan(path.basename(filePath) + ' unlink'));
        gulp.start(key + suffix);
    });

我正在努力解决一个问题,例如内存泄漏或某事,即:每次保存文件时,监视进程都会占用更多资源(CPU 在任务管理器中),结果整个 gulp.start 的任务需要更长的时间。启动新 gulp 时,最初的任务 运行 顺利,CPU 使用率低,启动的任务需要几毫秒才能执行。但是保存(即使是同一个文件)几次,CPU 使用率在几秒钟内上升到 100%。

我尝试切换到 gulp.watch (3.9):

gulp.watch(paths, function(event) {
    gulpUtil.log("File event: " + gulpUtil.colors.cyan(path.basename(event.path) + ' ' + event.type));
    gulp.start(key + suffix);
}).on('error', function(error) {
    gulpUtil.log(error);
});

我这里没有这个问题。但是 gulp.watch 不支持监听新文件,这就是我不想使用 chokidar 的原因。

您知道 chokidar 性能问题背后的原因是什么吗?如何诊断?

谢谢

我不知道chokidar的性能如何,但我会建议你使用gulp-watch

请注意,您需要绝对路径。

还要检查为什么 gulp.watch 不支持 new/removed 文件 here