我注意到 Windows 上的 chokidar 运行的 _read 进程与所选目录中的文件一样多。它只发生在 Windows 上,因为 Mac OS chokidar 每个目录只运行 1 个读取进程。
经过一些研究,看起来 chokidar 运行了一个巨大的循环,其中包含加载 CPU 并使 Electron 应用程序滞后的读取操作。
_read 进程是由 chokidar 触发的 readdirp 库生成的,用于扫描选定的目录,但我不明白为什么它有这么多操作,尤其是针对 mac 的只有 1 个操作。
这是 chokidar 配置的示例:
const options = {
awaitWriteFinish: true,
binaryInterval: 500,
depth: 9,
ignoreInitial: false,
ignorePermissionErrors: false,
interval: 500,
persistent: true,
}
const watcher = chokidar.watch(folderPath, options)
watcher.on('add', (event, path) => {
const buffer = fs.readFile(filePath, {
flag: 'r',
});
const fileHash = cr2.buf(buffer);
console.log(fileHash)
});
我注意到的读取操作与目录有关,而不是与文件有关,对于具有 5k 资产的目录,这与将被触发 5k 次的循环相同。
乔基达:3.5.1 Windows 10
为什么会这样?也许我的选项对象是错误的或者我错过了什么?