diff options
author | await-ovo <13152410380@163.com> | 2023-09-19 04:02:58 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-18 20:02:58 +0000 |
commit | dc1da309274823c15ad8ade0545678f8a9b8e54d (patch) | |
tree | 95514a8d53c3bcea02f07ac995946c68e5a37fa6 /cli/worker.rs | |
parent | f5963b6a0595810c0e4b6da793ce0d50a9944796 (diff) |
fix(cli): for main-module that exists in package.json, use the version defined in package.json directly (#20328)
Diffstat (limited to 'cli/worker.rs')
-rw-r--r-- | cli/worker.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/cli/worker.rs b/cli/worker.rs index 45968afe7..b29f22e6e 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -40,7 +40,9 @@ use deno_runtime::worker::WorkerOptions; use deno_runtime::BootstrapOptions; use deno_runtime::WorkerLogLevel; use deno_semver::npm::NpmPackageReqReference; +use deno_semver::package::PackageReqReference; +use crate::args::package_json::PackageJsonDeps; use crate::args::StorageKeyResolver; use crate::errors; use crate::npm::CliNpmResolver; @@ -89,6 +91,7 @@ pub struct CliMainWorkerOptions { pub seed: Option<u64>, pub unsafely_ignore_certificate_errors: Option<Vec<String>>, pub unstable: bool, + pub maybe_package_json_deps: Option<PackageJsonDeps>, } struct SharedWorkerState { @@ -356,6 +359,29 @@ impl CliMainWorkerFactory { let (main_module, is_main_cjs) = if let Ok(package_ref) = NpmPackageReqReference::from_specifier(&main_module) { + let package_ref = if package_ref.req().version_req.version_text() == "*" { + // When using the wildcard version, select the same version used in the + // package.json deps in order to prevent adding new dependency version + shared + .options + .maybe_package_json_deps + .as_ref() + .and_then(|deps| { + deps + .values() + .filter_map(|v| v.as_ref().ok()) + .find(|dep| dep.name == package_ref.req().name) + .map(|dep| { + NpmPackageReqReference::new(PackageReqReference { + req: dep.clone(), + sub_path: package_ref.sub_path().map(|s| s.to_string()), + }) + }) + }) + .unwrap_or(package_ref) + } else { + package_ref + }; shared .npm_resolver .add_package_reqs(&[package_ref.req().clone()]) |