# 如何监控文件的变动
更多描述
当一个文件或者一个目录下的文件有所变动时能够监控到。
如一些前端和后端项目在开发环境下会根据项目目录变动而重启或者重新编译
Issue
欢迎在 Gtihub Issue 中回答此问题: Issue 124 (opens new window)
Author
- 在 node 中调用 API
fs.watch
- 在 linux 中原理是
inotify
,macos 中原理是FSEvents
,windows 中原理是ReadDirectoryChangesW
- 由于内核对文件监控更加细粒度,更加敏感,当每次修改文件时可能触发内核多次调用,需要防抖
- 注意软链接,读写权限等文件系统属性
可参考文章 How to Watch for Files Changes in Node.js (opens new window) 及 精读《如何利用 Nodejs 监听文件夹》 (opens new window)
Author
我不太清楚问这个的目的,是 fs.watch 吧?若要问的深一点底层怎么做的监听,我就不会了。贴一下答案?
Author
@everlose 简单的总结了以下,见楼上
Author
chokidar 这个包更好吧,我记得理论上它避免了 fs.watch 的一些坑,而且 webpack 底层用的也是这个,在 mac 和 windows 的兼容性应该都还行