summaryrefslogtreecommitdiff
path: root/cli/npm
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-11-29 09:32:23 -0500
committerGitHub <noreply@github.com>2023-11-29 09:32:23 -0500
commit9ac405d587ca1465debd4a65a09324b7a6b2c04f (patch)
treeb3cc4adb3ddf06dc5d380c39f9e8a82c24b25655 /cli/npm
parent7e56a0466fc9964ca5dd3533bb65c00cd1bac4dc (diff)
feat(compile): support "bring your own node_modules" in deno compile (#21377)
Not tested thoroughly. This is a good start. Closes #21350
Diffstat (limited to 'cli/npm')
-rw-r--r--cli/npm/byonm.rs11
-rw-r--r--cli/npm/managed/mod.rs12
-rw-r--r--cli/npm/managed/resolvers/common.rs2
-rw-r--r--cli/npm/managed/resolvers/global.rs2
-rw-r--r--cli/npm/managed/resolvers/local.rs15
-rw-r--r--cli/npm/mod.rs2
6 files changed, 19 insertions, 25 deletions
diff --git a/cli/npm/byonm.rs b/cli/npm/byonm.rs
index 469f98828..aeb1c28b8 100644
--- a/cli/npm/byonm.rs
+++ b/cli/npm/byonm.rs
@@ -19,7 +19,7 @@ use deno_semver::package::PackageReq;
use crate::args::package_json::get_local_package_json_version_reqs;
use crate::args::NpmProcessState;
use crate::args::NpmProcessStateKind;
-use crate::util::fs::canonicalize_path_maybe_not_exists;
+use crate::util::fs::canonicalize_path_maybe_not_exists_with_fs;
use crate::util::path::specifier_to_file_path;
use super::common::types_package_name;
@@ -188,8 +188,8 @@ impl CliNpmResolver for ByonmCliNpmResolver {
InnerCliNpmResolverRef::Byonm(self)
}
- fn root_node_modules_path(&self) -> Option<std::path::PathBuf> {
- Some(self.root_node_modules_dir.clone())
+ fn root_node_modules_path(&self) -> Option<&PathBuf> {
+ Some(&self.root_node_modules_dir)
}
fn resolve_pkg_folder_from_deno_module_req(
@@ -215,7 +215,10 @@ impl CliNpmResolver for ByonmCliNpmResolver {
.unwrap()
.join("node_modules")
.join(key);
- return Ok(canonicalize_path_maybe_not_exists(&package_path)?);
+ return Ok(canonicalize_path_maybe_not_exists_with_fs(
+ &package_path,
+ fs,
+ )?);
}
}
}
diff --git a/cli/npm/managed/mod.rs b/cli/npm/managed/mod.rs
index 6cf7e6a32..ba2278045 100644
--- a/cli/npm/managed/mod.rs
+++ b/cli/npm/managed/mod.rs
@@ -288,12 +288,8 @@ impl ManagedCliNpmResolver {
pkg_id: &NpmPackageId,
) -> Result<PathBuf, AnyError> {
let path = self.fs_resolver.package_folder(pkg_id)?;
- let path = canonicalize_path_maybe_not_exists_with_fs(&path, |path| {
- self
- .fs
- .realpath_sync(path)
- .map_err(|err| err.into_io_error())
- })?;
+ let path =
+ canonicalize_path_maybe_not_exists_with_fs(&path, self.fs.as_ref())?;
log::debug!(
"Resolved package folder of {} to {}",
pkg_id.as_serialized(),
@@ -560,7 +556,7 @@ impl CliNpmResolver for ManagedCliNpmResolver {
&self.progress_bar,
self.api.base_url().clone(),
npm_resolution,
- self.root_node_modules_path(),
+ self.root_node_modules_path().map(ToOwned::to_owned),
self.npm_system_info.clone(),
),
self.global_npm_cache.clone(),
@@ -575,7 +571,7 @@ impl CliNpmResolver for ManagedCliNpmResolver {
InnerCliNpmResolverRef::Managed(self)
}
- fn root_node_modules_path(&self) -> Option<PathBuf> {
+ fn root_node_modules_path(&self) -> Option<&PathBuf> {
self.fs_resolver.node_modules_path()
}
diff --git a/cli/npm/managed/resolvers/common.rs b/cli/npm/managed/resolvers/common.rs
index 41b5d8a96..9fc5893fc 100644
--- a/cli/npm/managed/resolvers/common.rs
+++ b/cli/npm/managed/resolvers/common.rs
@@ -29,7 +29,7 @@ pub trait NpmPackageFsResolver: Send + Sync {
fn root_dir_url(&self) -> &Url;
/// The local node_modules folder if it is applicable to the implementation.
- fn node_modules_path(&self) -> Option<PathBuf>;
+ fn node_modules_path(&self) -> Option<&PathBuf>;
fn package_folder(
&self,
diff --git a/cli/npm/managed/resolvers/global.rs b/cli/npm/managed/resolvers/global.rs
index 7a51cead2..e62d9021c 100644
--- a/cli/npm/managed/resolvers/global.rs
+++ b/cli/npm/managed/resolvers/global.rs
@@ -75,7 +75,7 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver {
self.cache.root_dir_url()
}
- fn node_modules_path(&self) -> Option<PathBuf> {
+ fn node_modules_path(&self) -> Option<&PathBuf> {
None
}
diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs
index a4a8550f1..4051c9c31 100644
--- a/cli/npm/managed/resolvers/local.rs
+++ b/cli/npm/managed/resolvers/local.rs
@@ -122,14 +122,9 @@ impl LocalNpmPackageResolver {
};
// Canonicalize the path so it's not pointing to the symlinked directory
// in `node_modules` directory of the referrer.
- canonicalize_path_maybe_not_exists_with_fs(&path, |path| {
- self
- .fs
- .realpath_sync(path)
- .map_err(|err| err.into_io_error())
- })
- .map(Some)
- .map_err(|err| err.into())
+ canonicalize_path_maybe_not_exists_with_fs(&path, self.fs.as_ref())
+ .map(Some)
+ .map_err(|err| err.into())
}
}
@@ -139,8 +134,8 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver {
&self.root_node_modules_url
}
- fn node_modules_path(&self) -> Option<PathBuf> {
- Some(self.root_node_modules_path.clone())
+ fn node_modules_path(&self) -> Option<&PathBuf> {
+ Some(&self.root_node_modules_path)
}
fn package_folder(&self, id: &NpmPackageId) -> Result<PathBuf, AnyError> {
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs
index f4ea08186..474f493d5 100644
--- a/cli/npm/mod.rs
+++ b/cli/npm/mod.rs
@@ -75,7 +75,7 @@ pub trait CliNpmResolver: NpmResolver {
}
}
- fn root_node_modules_path(&self) -> Option<PathBuf>;
+ fn root_node_modules_path(&self) -> Option<&PathBuf>;
fn resolve_pkg_folder_from_deno_module_req(
&self,