diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-09-29 09:26:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-29 09:26:25 -0400 |
commit | 5edd102f3f912a53c7bcad3b0fa4feb672ada323 (patch) | |
tree | 2402b64e527bd859f3a2c71d3e96a89992002aa2 /cli/graph_util.rs | |
parent | d43e48c4e96b02289d505cd2558ba85d7d6cb57b (diff) |
refactor(cli): make `CliNpmResolver` a trait (#20732)
This makes `CliNpmResolver` a trait. The terminology used is:
- **managed** - Deno manages the node_modules folder and does an
auto-install (ex. `ManagedCliNpmResolver`)
- **byonm** - "Bring your own node_modules" (ex. `ByonmCliNpmResolver`,
which is in this PR, but unimplemented at the moment)
Part of #18967
Diffstat (limited to 'cli/graph_util.rs')
-rw-r--r-- | cli/graph_util.rs | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/cli/graph_util.rs b/cli/graph_util.rs index e567bebb5..a4a5dcab1 100644 --- a/cli/graph_util.rs +++ b/cli/graph_util.rs @@ -171,7 +171,7 @@ pub fn graph_lock_or_exit(graph: &ModuleGraph, lockfile: &mut Lockfile) { pub struct ModuleGraphBuilder { options: Arc<CliOptions>, resolver: Arc<CliGraphResolver>, - npm_resolver: Arc<CliNpmResolver>, + npm_resolver: Arc<dyn CliNpmResolver>, parsed_source_cache: Arc<ParsedSourceCache>, lockfile: Option<Arc<Mutex<Lockfile>>>, maybe_file_watcher_reporter: Option<FileWatcherReporter>, @@ -186,7 +186,7 @@ impl ModuleGraphBuilder { pub fn new( options: Arc<CliOptions>, resolver: Arc<CliGraphResolver>, - npm_resolver: Arc<CliNpmResolver>, + npm_resolver: Arc<dyn CliNpmResolver>, parsed_source_cache: Arc<ParsedSourceCache>, lockfile: Option<Arc<Mutex<Lockfile>>>, maybe_file_watcher_reporter: Option<FileWatcherReporter>, @@ -245,11 +245,10 @@ impl ModuleGraphBuilder { ) .await?; - if graph.has_node_specifier && self.options.type_check_mode().is_true() { - self - .npm_resolver - .inject_synthetic_types_node_package() - .await?; + if let Some(npm_resolver) = self.npm_resolver.as_managed() { + if graph.has_node_specifier && self.options.type_check_mode().is_true() { + npm_resolver.inject_synthetic_types_node_package().await?; + } } Ok(graph) @@ -391,16 +390,18 @@ impl ModuleGraphBuilder { } } - // ensure that the top level package.json is installed if a - // specifier was matched in the package.json - self - .resolver - .top_level_package_json_install_if_necessary() - .await?; + if let Some(npm_resolver) = self.npm_resolver.as_managed() { + // ensure that the top level package.json is installed if a + // specifier was matched in the package.json + self + .resolver + .top_level_package_json_install_if_necessary() + .await?; - // resolve the dependencies of any pending dependencies - // that were inserted by building the graph - self.npm_resolver.resolve_pending().await?; + // resolve the dependencies of any pending dependencies + // that were inserted by building the graph + npm_resolver.resolve_pending().await?; + } Ok(()) } |