0

我注意到 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

为什么会这样?也许我的选项对象是错误的或者我错过了什么?

4

0 回答 0