Repository navigation
Make fs.watch recursive on Windows #375
Description
Activity
Most people writing cross-os tools don't rely on core fs.watch but various fs.watch replacements/supplements such as https://github.com/paulmillr/chokidar
If we had recursive watch support for OS X and Windows, then Linux could be handled using a series of inotify watchers
That won't really work - or at least, work well - due to the relatively low per-user inotify limit. It's something you can tweak through a sysctl but most people leave it at the default (for good reasons, having too many watchers seriously impacts performance.)
It would help to have the recursive support for Windows at least. For Linux there is no choice but to make the most of inotify as far as possible (only watching directories, not files) and then fall back to polling when inotify limits are reached. That's better than just polling to begin with. But for Windows, there's no way to use fs.watch at all at present (unless it has recursive support) because of how it locks every watched directory.
- addedwindowsIssues and PRs related to the Windows platform.Issues and PRs related to the Windows platform.
on Jan 22, 2015 - addedfsIssues and PRs related to file-system APIs and the fs module.Issues and PRs related to file-system APIs and the fs module.
on Feb 6, 2015 +1 to expose the recursive option on windows. I really want to benefit from the native support of recursing and not rely on some custom solution that has to a) lock every child folder and b) consume lots of CPU/Memory while doing so.
Please please please add this flag for windows.
@bpasero io.js accepts pull requests, you know. :-)
Jest aside, I personally don't object to a recursive flag. The pitfalls need to be called out in the documentation, though.
@bnoordhuis whats wrong with joyent/libuv#1473 ?
@saghul already called it out, it breaks the ABI. It's also possibly stale by now. Someone needs to pick it up and do the work of getting the necessary changes landed in libuv and io.js.
My careful use of the word 'someone' is a hint that it won't be me. :-)
I'm also interested in this for https://github.com/qard/onchange. I don't really do Windows dev though, so I'm not sure I'd be able to put together a decent PR for this. I'm hoping someone better at Windows figures this out before I can take the time to look into it.
@bnoordhuis I created libuv/libuv#198. I think this report can be closed as it seems to be a libuv only thing?
- addedlibuvIssues and PRs related to the libuv dependency or the uv binding.Issues and PRs related to the libuv dependency or the uv binding.
on May 26, 2015 - addedfeature requestIssues requesting new Node.js features.Issues requesting new Node.js features.
on Jun 5, 2015 This is in libuv as of 1.7.0, so it should get in when #2310 is merged.
- added a commit that references this issue
on Sep 4, 2015 Fixed by a338eb3
- added 7 commits that reference this issue
on Sep 5, 2015
I spotted the recursive watch support for OS X in the io.js changelog.
There's a pull request for libuv at joyent/libuv#1473 to add recursive watch support for Windows but it has been sitting for a few months.
Is there anyone here who could help to get that through?
If we had recursive watch support for OS X and Windows, then Linux could be handled using a series of inotify watchers (we can't do this on Windows because it would lock every watch directory or parent thereof), and we could get a decent cross-platform watch implementation working on top of io.js.