diff options
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 5b9ba94f1..f0da80bab 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -927,6 +927,25 @@ impl Inner { Ok(()) } + async fn get_npm_snapshot( + &self, + ) -> Option<ValidSerializedNpmResolutionSnapshot> { + let lockfile = self.config.maybe_lockfile()?; + let snapshot = + match snapshot_from_lockfile(lockfile.clone(), &*self.npm.api).await { + Ok(snapshot) => snapshot, + Err(err) => { + lsp_warn!("Failed getting npm snapshot from lockfile: {}", err); + return None; + } + }; + + // clear the memory cache to reduce memory usage + self.npm.api.clear_memory_cache(); + + Some(snapshot) + } + async fn recreate_npm_services_if_necessary(&mut self) { let deno_dir = match DenoDir::new(self.maybe_global_cache_path.clone()) { Ok(deno_dir) => deno_dir, @@ -948,18 +967,7 @@ impl Inner { registry_url, &progress_bar, ); - let maybe_snapshot = match self.config.maybe_lockfile() { - Some(lockfile) => { - match snapshot_from_lockfile(lockfile.clone(), &self.npm.api).await { - Ok(snapshot) => Some(snapshot), - Err(err) => { - lsp_warn!("Failed getting npm snapshot from lockfile: {}", err); - None - } - } - } - None => None, - }; + let maybe_snapshot = self.get_npm_snapshot().await; (self.npm.resolver, self.npm.resolution) = create_npm_resolver_and_resolution( registry_url, |