diff options
Diffstat (limited to 'cli/tools/registry/pm.rs')
-rw-r--r-- | cli/tools/registry/pm.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs index 05785ec74..c92710f46 100644 --- a/cli/tools/registry/pm.rs +++ b/cli/tools/registry/pm.rs @@ -5,6 +5,7 @@ mod cache_deps; pub use cache_deps::cache_top_level_deps; use deno_semver::jsr::JsrPackageReqReference; use deno_semver::npm::NpmPackageReqReference; +use deno_semver::VersionReq; use std::borrow::Cow; use std::path::PathBuf; @@ -717,7 +718,18 @@ impl AddPackageReq { Prefix::Npm => { let req_ref = NpmPackageReqReference::from_str(&format!("npm:{}", entry_text))?; - let package_req = req_ref.into_inner().req; + let mut package_req = req_ref.into_inner().req; + // deno_semver defaults to a version req of `*` if none is specified + // we want to default to `latest` instead + if package_req.version_req == *deno_semver::WILDCARD_VERSION_REQ + && package_req.version_req.version_text() == "*" + && !entry_text.contains("@*") + { + package_req.version_req = VersionReq::from_raw_text_and_inner( + "latest".into(), + deno_semver::RangeSetOrTag::Tag("latest".into()), + ); + } Ok(Ok(AddPackageReq { alias: maybe_alias.unwrap_or_else(|| package_req.name.to_string()), value: AddPackageReqValue::Npm(package_req), @@ -888,7 +900,9 @@ mod test { AddPackageReq::parse("@alias/pkg@npm:foo").unwrap().unwrap(), AddPackageReq { alias: "@alias/pkg".to_string(), - value: AddPackageReqValue::Npm(PackageReq::from_str("foo").unwrap()) + value: AddPackageReqValue::Npm( + PackageReq::from_str("foo@latest").unwrap() + ) } ); assert_eq!( |