From 56195123bc89fb910fcf42bcd2a58520067e37a7 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 14 Oct 2024 14:02:24 -0400 Subject: [PATCH 1/4] fix(install): support installing npm package with alias --- cli/tools/registry/pm.rs | 9 ++++++++- tests/specs/add/alias/__test__.jsonc | 13 +++++++++++++ tests/specs/add/alias/package.json | 4 ++++ tests/specs/add/alias/package.json.out | 3 +++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 tests/specs/add/alias/__test__.jsonc create mode 100644 tests/specs/add/alias/package.json create mode 100644 tests/specs/add/alias/package.json.out diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs index 5dc04262028297..b20c011107c694 100644 --- a/cli/tools/registry/pm.rs +++ b/cli/tools/registry/pm.rs @@ -363,7 +363,14 @@ fn package_json_dependency_entry( selected: SelectedPackage, ) -> (String, String) { if let Some(npm_package) = selected.package_name.strip_prefix("npm:") { - (npm_package.into(), selected.version_req) + if selected.import_name == npm_package { + (npm_package.into(), selected.version_req) + } else { + ( + selected.import_name, + format!("npm:{}@{}", npm_package, selected.version_req), + ) + } } else if let Some(jsr_package) = selected.package_name.strip_prefix("jsr:") { let jsr_package = jsr_package.strip_prefix('@').unwrap_or(jsr_package); let scope_replaced = jsr_package.replace('/', "__"); diff --git a/tests/specs/add/alias/__test__.jsonc b/tests/specs/add/alias/__test__.jsonc new file mode 100644 index 00000000000000..8a16ad3b46afe4 --- /dev/null +++ b/tests/specs/add/alias/__test__.jsonc @@ -0,0 +1,13 @@ +{ + "tempDir": true, + "steps": [{ + "args": "install my-alias@npm:@denotest/add", + "output": "[WILDCARD]" + }, { + "args": [ + "eval", + "console.log(Deno.readTextFileSync('package.json').trim())" + ], + "output": "package.json.out" + }] +} diff --git a/tests/specs/add/alias/package.json b/tests/specs/add/alias/package.json new file mode 100644 index 00000000000000..9664f260a72b79 --- /dev/null +++ b/tests/specs/add/alias/package.json @@ -0,0 +1,4 @@ +{ + "dependencies": { + } +} diff --git a/tests/specs/add/alias/package.json.out b/tests/specs/add/alias/package.json.out new file mode 100644 index 00000000000000..11e9ffe32331df --- /dev/null +++ b/tests/specs/add/alias/package.json.out @@ -0,0 +1,3 @@ +{ + "dependencies": { "my-alias": "npm:@denotest/add@^1.0.0" } +} From 06c87a1a2ce98c68ac48fb61a59425ee3a603403 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 14 Oct 2024 14:08:35 -0400 Subject: [PATCH 2/4] improve output --- cli/tools/registry/pm.rs | 3 +++ tests/specs/add/alias/package.json.out | 4 +++- tests/specs/add/dev/package.json.out | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs index b20c011107c694..3276acfbf7be81 100644 --- a/cli/tools/registry/pm.rs +++ b/cli/tools/registry/pm.rs @@ -748,6 +748,9 @@ fn generate_imports(mut packages_to_version: Vec<(String, String)>) -> String { let mut contents = vec![]; let len = packages_to_version.len(); for (index, (package, version)) in packages_to_version.iter().enumerate() { + if index == 0 { + contents.push(String::new()); // force a newline at the start + } // TODO(bartlomieju): fix it, once we start support specifying version on the cli contents.push(format!("\"{}\": \"{}\"", package, version)); if index != len - 1 { diff --git a/tests/specs/add/alias/package.json.out b/tests/specs/add/alias/package.json.out index 11e9ffe32331df..b6326e8bfbd0ba 100644 --- a/tests/specs/add/alias/package.json.out +++ b/tests/specs/add/alias/package.json.out @@ -1,3 +1,5 @@ { - "dependencies": { "my-alias": "npm:@denotest/add@^1.0.0" } + "dependencies": { + "my-alias": "npm:@denotest/add@^1.0.0" + } } diff --git a/tests/specs/add/dev/package.json.out b/tests/specs/add/dev/package.json.out index d5ca56e00478be..866724397f1903 100644 --- a/tests/specs/add/dev/package.json.out +++ b/tests/specs/add/dev/package.json.out @@ -1,3 +1,5 @@ { - "devDependencies": { "@denotest/esm-basic": "^1.0.0" } + "devDependencies": { + "@denotest/esm-basic": "^1.0.0" + } } From de3a39d223329e9b691bc343aa2d9bea25a6c544 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 14 Oct 2024 14:24:19 -0400 Subject: [PATCH 3/4] fix output --- tests/specs/install/install_add_dev/package.json.out | 4 +++- .../specs/install/install_deprecated_package/package.json.out | 4 +++- tests/specs/remove/package_json/rm_add_package.json.out | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/specs/install/install_add_dev/package.json.out b/tests/specs/install/install_add_dev/package.json.out index d5ca56e00478be..866724397f1903 100644 --- a/tests/specs/install/install_add_dev/package.json.out +++ b/tests/specs/install/install_add_dev/package.json.out @@ -1,3 +1,5 @@ { - "devDependencies": { "@denotest/esm-basic": "^1.0.0" } + "devDependencies": { + "@denotest/esm-basic": "^1.0.0" + } } diff --git a/tests/specs/install/install_deprecated_package/package.json.out b/tests/specs/install/install_deprecated_package/package.json.out index 4b4b08087a2a1c..0cf36cd24f7297 100644 --- a/tests/specs/install/install_deprecated_package/package.json.out +++ b/tests/specs/install/install_deprecated_package/package.json.out @@ -1,3 +1,5 @@ { - "dependencies": { "@denotest/deprecated-package": "^1.0.0" } + "dependencies": { + "@denotest/deprecated-package": "^1.0.0" + } } diff --git a/tests/specs/remove/package_json/rm_add_package.json.out b/tests/specs/remove/package_json/rm_add_package.json.out index d5ca56e00478be..866724397f1903 100644 --- a/tests/specs/remove/package_json/rm_add_package.json.out +++ b/tests/specs/remove/package_json/rm_add_package.json.out @@ -1,3 +1,5 @@ { - "devDependencies": { "@denotest/esm-basic": "^1.0.0" } + "devDependencies": { + "@denotest/esm-basic": "^1.0.0" + } } From d550b33ad8597f0a8da210ce0c395f8bb747d59d Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 14 Oct 2024 15:00:23 -0400 Subject: [PATCH 4/4] fix last test --- .../install/future_install_local_add_npm/package.json.out | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/specs/install/future_install_local_add_npm/package.json.out b/tests/specs/install/future_install_local_add_npm/package.json.out index ad8518e791a975..613d9863605e42 100644 --- a/tests/specs/install/future_install_local_add_npm/package.json.out +++ b/tests/specs/install/future_install_local_add_npm/package.json.out @@ -1,3 +1,5 @@ { - "dependencies": { "@denotest/esm-basic": "^1.0.0" } + "dependencies": { + "@denotest/esm-basic": "^1.0.0" + } }