Chokidar跨平台文件查看器

联合创作 · 2023-09-29 12:00

Chokidar 是一个极简高效的跨平台文件查看器。

Node.js fs.watch:

  • 在 MacOS 上不报告文件名。
  • 在 MacOS 上使用 Sublime 等编辑器时根本不报告事件。
  • 经常报告事件两次。
  • 将大多数更改作为rename.
  • 不提供递归观察文件树的简单方法。
  • 不支持在 Linux 上递归观看。

Node.js fs.watchFile:

  • 在事件处理方面几乎同样糟糕。
  • 也不提供任何递归监视。
  • 导致 CPU 使用率高。

Chokidar 则解决了这些问题。

Chokidar 最初是为 Brunch(一种超快速的网络应用程序构建工具)制作的,现在已被用于微软的Visual Studio Code、gulp、karma、PM2、browserify、webpack、BrowserSync和许多其他软件。

Chokidar 仍然依赖于 Node.js 的核心 fs 模块,但是当使用fs.watch和fs.watchFile进行观察时,它对收到的事件进行了规范化处理,经常通过获取文件统计信息和/或dir内容来检查真相。

在 MacOS 上,Chokidar 默认使用暴露于 Darwin FSEvents API 的本地扩展。与大多数*nix平台上的kqueue等实现相比,这提供了非常有效的递归观察。Chokidar仍然需要做一些工作来规范以这种方式接收的事件。

在大多数其他平台上,基于fs.watch的实现是默认的,它避免了轮询并降低了CPU的使用率。请注意,chokidar会在指定的路径范围内递归地启动观察器,所以要谨慎行事,不要因为观察超过需要而浪费了系统资源。

浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报