Add watchOptions to tsconfig and allow supplying them on command line as well#35615
Add watchOptions to tsconfig and allow supplying them on command line as well#35615sheetalkamat merged 8 commits intomasterfrom
Conversation
|
Thanks for the PR! It looks like you've changed the TSServer protocol in some way. Please ensure that any changes here don't break consumers of the current TSServer API. For some extra review, we'll ping @sheetalkamat, @amcasey, @mjbvz, @minestarks for you. Feel free to loop in other consumers/maintainers if necessary |
|
@typescript-bot pack this |
|
Heya @sheetalkamat, I've started to run the tarball bundle task on this PR at 11d7f4f. You can monitor the build here. It should now contribute to this PR's status checks. |
|
Hey @sheetalkamat, I've packed this into an installable tgz. You can install it for testing by referencing it in your and then running There is also a playground for this build. |
|
Nice work! |
|
Should this help with #33335 ? If so, are there any aditional steps necessary? I've installed the latest nightly and selected it in VS Code but it doesn't seem to have helped. |
| const fileWatcherAddedLog = [ | ||
| "FileWatcher:: Added:: WatchInfo: /f.ts 250 Source file\n", | ||
| "FileWatcher:: Added:: WatchInfo: /a/lib/lib.d.ts 250 Source file\n" | ||
| "FileWatcher:: Added:: WatchInfo: /f.ts 250 undefined Source file\n", |
There was a problem hiding this comment.
What does undefined refer to here?
There was a problem hiding this comment.
undefined is watchOptions passed to the file watcher
| name: "synchronousWatchDirectory", | ||
| type: "boolean", | ||
| category: Diagnostics.Advanced_Options, | ||
| description: Diagnostics.Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_support_recursive_watching_natively, |
There was a problem hiding this comment.
As a user, is this relevant to me? What do I need to know? It's not clear to me what this option does.
There was a problem hiding this comment.
Also, what's the default?
There was a problem hiding this comment.
default is false and setting this to true would get you behaviour in 3.7.. This is new flag that when not set, on recursive directory watching doesnt update the watcher status right away but instead sets a timeout to update the watches for recursive structure.. (eg. when say removing or creating node_modules folder, while npm install is going, the recursive watchers aren't updated right away but on timeout so we aren't eg adding watches on directories that will anyways be deleted or recreated..)
There was a problem hiding this comment.
Who would you say would use this feature? Here's how I'm describing it.
Disable deferred watching on directories. Deferred watching is useful when lots of file changes might occur at once (e.g. a change in
node_modulesfrom runningnpm install), but you might want to disable it with this flag for some atypical setups.
There was a problem hiding this comment.
This is kind of backup flag that can disable this behavior if changes aren't reflected correctly/sooner.
| description: Diagnostics.Specify_strategy_for_watching_directory_on_platforms_that_don_t_support_recursive_watching_natively_Colon_UseFsEvents_default_FixedPollingInterval_DynamicPriorityPolling, | ||
| }, | ||
| { | ||
| name: "fallbackPolling", |
There was a problem hiding this comment.
Is this polling for files, directories, or both?
There was a problem hiding this comment.
Its for both.. Any fallback when filesystem native fails uses this method
watchOptionsas entry parallel tocompilerOptionsin tsconfig to specifywatchspecific options. Eg.watchFilestrategy etc. It would also allow us to set ignores for watches or some such options in future, or allowing delayed project watches in the server and others.watchFilestrategy to watch files,watchDirectorystrategy to watch individual directory on the OS that don't support native recursive watching andfallbackPollingmethod to poll when fs related watching fails.synchronousWatchDirectoryinwatchOptionsFixes 100% CPU when installing node_modules while a file is open #30208, VSCode and intellisense are broken and unstable #32033, Code Helper high CPU (electron_node tsserver.js) #34401