summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-09-24 18:10:01 -0700
committerGitHub <noreply@github.com>2024-09-25 01:10:01 +0000
commit5c40b47629bc83b9120019b77b34ced5eaabcffe (patch)
tree019d8007267d916e9f8aa09cf6e8d007b7cfa373
parent6c26c1ed96da2fc869bddbfdbdc833f176f3f736 (diff)
fix(add/install): default to "latest" tag for npm packages in `deno add npm:pkg` (#25858)
Fixes #25813. I initially tried doing this in `deno_semver`, where it's a cleaner change, but that caused breakage in deno in places where we don't expect a tag (see https://github.com/denoland/deno/issues/25857). This does not fix wildcard requirements failing to choose pre-release versions. That's a little more involved and I'll do a separate PR.
-rw-r--r--cli/tools/registry/pm.rs18
-rw-r--r--tests/registry/npm/@denotest/unstable/1.0.0-beta.1/index.js3
-rw-r--r--tests/registry/npm/@denotest/unstable/1.0.0-beta.1/package.json5
-rw-r--r--tests/specs/add/only_unstable_versions/__test__.jsonc9
-rw-r--r--tests/specs/add/only_unstable_versions/add.out3
-rw-r--r--tests/specs/add/only_unstable_versions/deno.json1
6 files changed, 37 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!(
diff --git a/tests/registry/npm/@denotest/unstable/1.0.0-beta.1/index.js b/tests/registry/npm/@denotest/unstable/1.0.0-beta.1/index.js
new file mode 100644
index 000000000..ba330abd5
--- /dev/null
+++ b/tests/registry/npm/@denotest/unstable/1.0.0-beta.1/index.js
@@ -0,0 +1,3 @@
+export function sayHello() {
+ console.log("Hello")
+} \ No newline at end of file
diff --git a/tests/registry/npm/@denotest/unstable/1.0.0-beta.1/package.json b/tests/registry/npm/@denotest/unstable/1.0.0-beta.1/package.json
new file mode 100644
index 000000000..69f2a57cd
--- /dev/null
+++ b/tests/registry/npm/@denotest/unstable/1.0.0-beta.1/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "@denotest/unstable",
+ "type": "module",
+ "version": "1.0.0-beta.1"
+} \ No newline at end of file
diff --git a/tests/specs/add/only_unstable_versions/__test__.jsonc b/tests/specs/add/only_unstable_versions/__test__.jsonc
new file mode 100644
index 000000000..d05628b6f
--- /dev/null
+++ b/tests/specs/add/only_unstable_versions/__test__.jsonc
@@ -0,0 +1,9 @@
+{
+ "tempDir": true,
+ "steps": [
+ {
+ "args": "add npm:@denotest/unstable",
+ "output": "add.out"
+ }
+ ]
+}
diff --git a/tests/specs/add/only_unstable_versions/add.out b/tests/specs/add/only_unstable_versions/add.out
new file mode 100644
index 000000000..48462b8be
--- /dev/null
+++ b/tests/specs/add/only_unstable_versions/add.out
@@ -0,0 +1,3 @@
+Add npm:@denotest/unstable@1.0.0-beta.1
+Download http://localhost:4260/@denotest/unstable
+Download http://localhost:4260/@denotest/unstable/1.0.0-beta.1.tgz
diff --git a/tests/specs/add/only_unstable_versions/deno.json b/tests/specs/add/only_unstable_versions/deno.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/tests/specs/add/only_unstable_versions/deno.json
@@ -0,0 +1 @@
+{}