summaryrefslogtreecommitdiff
path: root/cli/factory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/factory.rs')
-rw-r--r--cli/factory.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/cli/factory.rs b/cli/factory.rs
index 0c85536c4..c64268ce3 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -29,6 +29,7 @@ use crate::npm::create_npm_fs_resolver;
use crate::npm::CliNpmRegistryApi;
use crate::npm::CliNpmResolver;
use crate::npm::NpmCache;
+use crate::npm::NpmPackageFsResolver;
use crate::npm::NpmResolution;
use crate::npm::PackageJsonDepsInstaller;
use crate::resolver::CliGraphResolver;
@@ -325,6 +326,23 @@ impl CliFactory {
.await
}
+ pub async fn create_node_modules_npm_fs_resolver(
+ &self,
+ node_modules_dir_path: PathBuf,
+ ) -> Result<Arc<dyn NpmPackageFsResolver>, AnyError> {
+ Ok(create_npm_fs_resolver(
+ self.fs().clone(),
+ self.npm_cache()?.clone(),
+ self.text_only_progress_bar(),
+ CliNpmRegistryApi::default_url().to_owned(),
+ self.npm_resolution().await?.clone(),
+ // when an explicit path is provided here, it will create the
+ // local node_modules variant of an npm fs resolver
+ Some(node_modules_dir_path),
+ self.options.npm_system_info(),
+ ))
+ }
+
pub fn package_json_deps_provider(&self) -> &Arc<PackageJsonDepsProvider> {
self.services.package_json_deps_provider.get_or_init(|| {
Arc::new(PackageJsonDepsProvider::new(