-
Notifications
You must be signed in to change notification settings - Fork 29.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make fs.watch recursive on Windows #375
Comments
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 |
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. |
+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? |
This is in libuv as of 1.7.0, so it should get in when #2310 is merged. |
Recursive file watching is supported by libuv since 1.7.0. Refer https://github.com/nodejs/node/blob/master/deps/uv/ChangeLog#L126. This patch notes that in the docs and enables testing this feature. It also adds proper TAP plugin parsable message for other platforms. PR-URL: #2649 Fixes: #375 Reviewed-By: rvagg - Rod Vagg <rod@vagg.org> Reviewed-By: silverwind - Roman Reiss <me@silverwind.io>
Fixed by a338eb3 |
Recursive file watching is supported by libuv since 1.7.0. Refer https://github.com/nodejs/node/blob/master/deps/uv/ChangeLog#L126. This patch notes that in the docs and enables testing this feature. It also adds proper TAP plugin parsable message for other platforms. PR-URL: #2649 Fixes: #375 Reviewed-By: rvagg - Rod Vagg <rod@vagg.org> Reviewed-By: silverwind - Roman Reiss <me@silverwind.io>
Recursive file watching is supported by libuv since 1.7.0. Refer https://github.com/nodejs/node/blob/master/deps/uv/ChangeLog#L126. This patch notes that in the docs and enables testing this feature. It also adds proper TAP plugin parsable message for other platforms. PR-URL: #2649 Fixes: #375 Reviewed-By: rvagg - Rod Vagg <rod@vagg.org> Reviewed-By: silverwind - Roman Reiss <me@silverwind.io>
Recursive file watching is supported by libuv since 1.7.0. Refer https://github.com/nodejs/node/blob/master/deps/uv/ChangeLog#L126. This patch notes that in the docs and enables testing this feature. It also adds proper TAP plugin parsable message for other platforms. PR-URL: #2649 Fixes: #375 Reviewed-By: rvagg - Rod Vagg <rod@vagg.org> Reviewed-By: silverwind - Roman Reiss <me@silverwind.io>
Recursive file watching is supported by libuv since 1.7.0. Refer https://github.com/nodejs/node/blob/master/deps/uv/ChangeLog#L126. This patch notes that in the docs and enables testing this feature. It also adds proper TAP plugin parsable message for other platforms. PR-URL: #2649 Fixes: #375 Reviewed-By: rvagg - Rod Vagg <rod@vagg.org> Reviewed-By: silverwind - Roman Reiss <me@silverwind.io>
Recursive file watching is supported by libuv since 1.7.0. Refer https://github.com/nodejs/node/blob/master/deps/uv/ChangeLog#L126. This patch notes that in the docs and enables testing this feature. It also adds proper TAP plugin parsable message for other platforms. PR-URL: #2649 Fixes: #375 Reviewed-By: rvagg - Rod Vagg <rod@vagg.org> Reviewed-By: silverwind - Roman Reiss <me@silverwind.io>
Recursive file watching is supported by libuv since 1.7.0. Refer https://github.com/nodejs/node/blob/master/deps/uv/ChangeLog#L126. This patch notes that in the docs and enables testing this feature. It also adds proper TAP plugin parsable message for other platforms. PR-URL: #2649 Fixes: #375 Reviewed-By: rvagg - Rod Vagg <rod@vagg.org> Reviewed-By: silverwind - Roman Reiss <me@silverwind.io>
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.
The text was updated successfully, but these errors were encountered: