mirror of
https://github.com/denoland/deno.git
synced 2024-11-24 15:19:26 -05:00
feat(add): strip package subpath when adding a package (#25419)
These now works: ``` $ deno add @std/dotenv/load $ deno add npm:preact/hooks ``` Previously we were erroring out, because this is a "package reference" including a subpath. Closes https://github.com/denoland/deno/issues/25385 --------- Signed-off-by: Bartek Iwańczuk <biwanczuk@gmail.com> Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
This commit is contained in:
parent
74fc66da11
commit
c58a628e2f
6 changed files with 43 additions and 2 deletions
|
@ -3,6 +3,8 @@
|
|||
mod cache_deps;
|
||||
|
||||
pub use cache_deps::cache_top_level_deps;
|
||||
use deno_semver::jsr::JsrPackageReqReference;
|
||||
use deno_semver::npm::NpmPackageReqReference;
|
||||
|
||||
use std::borrow::Cow;
|
||||
use std::path::Path;
|
||||
|
@ -501,14 +503,18 @@ impl AddPackageReq {
|
|||
|
||||
match prefix {
|
||||
Prefix::Jsr => {
|
||||
let package_req = PackageReq::from_str(entry_text)?;
|
||||
let req_ref =
|
||||
JsrPackageReqReference::from_str(&format!("jsr:{}", entry_text))?;
|
||||
let package_req = req_ref.into_inner().req;
|
||||
Ok(AddPackageReq {
|
||||
alias: maybe_alias.unwrap_or_else(|| package_req.name.to_string()),
|
||||
value: AddPackageReqValue::Jsr(package_req),
|
||||
})
|
||||
}
|
||||
Prefix::Npm => {
|
||||
let package_req = PackageReq::from_str(entry_text)?;
|
||||
let req_ref =
|
||||
NpmPackageReqReference::from_str(&format!("npm:{}", entry_text))?;
|
||||
let package_req = req_ref.into_inner().req;
|
||||
Ok(AddPackageReq {
|
||||
alias: maybe_alias.unwrap_or_else(|| package_req.name.to_string()),
|
||||
value: AddPackageReqValue::Npm(package_req),
|
||||
|
|
19
tests/specs/add/add_with_subpath/__test__.jsonc
Normal file
19
tests/specs/add/add_with_subpath/__test__.jsonc
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"steps": [
|
||||
{
|
||||
"args": "add @std/testing/bdd npm:preact/hooks",
|
||||
"output": "add.out"
|
||||
},
|
||||
{
|
||||
"args": "add @std/testing/bdd@1 npm:preact/hooks@10",
|
||||
"output": "wrong_constraint_jsr.out",
|
||||
"exitCode": 1
|
||||
},
|
||||
{
|
||||
"args": "add npm:preact/hooks@10",
|
||||
"output": "wrong_constraint_npm.out",
|
||||
"exitCode": 1
|
||||
}
|
||||
]
|
||||
}
|
8
tests/specs/add/add_with_subpath/add.out
Normal file
8
tests/specs/add/add_with_subpath/add.out
Normal file
|
@ -0,0 +1,8 @@
|
|||
[UNORDERED_START]
|
||||
Add jsr:@std/testing@1.0.0
|
||||
Add npm:preact@10.19.6
|
||||
Download http://127.0.0.1:4250/@std/testing/1.0.0/bdd.ts
|
||||
Download http://127.0.0.1:4250/@std/testing/1.0.0/types.ts
|
||||
Download http://localhost:4260/preact
|
||||
Download http://localhost:4260/preact/preact-10.19.6.tgz
|
||||
[UNORDERED_END]
|
0
tests/specs/add/add_with_subpath/deno.json
Normal file
0
tests/specs/add/add_with_subpath/deno.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
error: Failed to parse package required: @std/testing/bdd@1
|
||||
|
||||
Caused by:
|
||||
Invalid package specifier 'jsr:@std/testing/bdd@1'. Did you mean to write 'jsr:@std/testing@1/bdd'?
|
|
@ -0,0 +1,4 @@
|
|||
error: Failed to parse package required: npm:preact/hooks@10
|
||||
|
||||
Caused by:
|
||||
Invalid package specifier 'npm:preact/hooks@10'. Did you mean to write 'npm:preact@10/hooks'?
|
Loading…
Reference in a new issue