diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-05-19 18:39:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-19 22:39:27 +0000 |
commit | cc406c8360b4ba559d7f13e14d2a32e1ab761b0d (patch) | |
tree | a2cfae5c7f082261aa504b2f00fe6f53f4626dfe /cli/factory.rs | |
parent | 7f5290b6946fececec5ec3acd85e67cd16960b8e (diff) |
feat(vendor): support for npm specifiers (#19186)
We never properly added support for this. This fixes vendoring when it
has npm or node specifiers. Vendoring occurs by adding a
`"nodeModulesDir": true` property to deno.json then it uses a local
node_modules directory. This can be opted out by setting
`"nodeModulesDir": false` or running with `--node-modules-dir=false`.
Closes #18090
Closes #17210
Closes #17619
Closes #16778
Diffstat (limited to 'cli/factory.rs')
-rw-r--r-- | cli/factory.rs | 18 |
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( |