mirror of
https://github.com/denoland/deno.git
synced 2024-12-23 15:49:44 -05:00
fix(cli): for main-module that exists in package.json, use the version defined in package.json directly (#20328)
This commit is contained in:
parent
f5963b6a05
commit
dc1da30927
11 changed files with 72 additions and 3 deletions
|
@ -684,6 +684,7 @@ impl CliFactory {
|
|||
.unsafely_ignore_certificate_errors()
|
||||
.clone(),
|
||||
unstable: self.options.unstable(),
|
||||
maybe_package_json_deps: self.options.maybe_package_json_deps(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -458,6 +458,7 @@ pub async fn run(
|
|||
unsafely_ignore_certificate_errors: metadata
|
||||
.unsafely_ignore_certificate_errors,
|
||||
unstable: metadata.unstable,
|
||||
maybe_package_json_deps: package_json_deps_provider.deps().cloned(),
|
||||
},
|
||||
);
|
||||
|
||||
|
|
|
@ -448,6 +448,27 @@ itest!(permissions_outside_package {
|
|||
http_server: true,
|
||||
});
|
||||
|
||||
itest!(run_existing_npm_package {
|
||||
args: "run --allow-read --node-modules-dir npm:@denotest/bin",
|
||||
output: "npm/run_existing_npm_package/main.out",
|
||||
envs: env_vars_for_npm_tests(),
|
||||
http_server: true,
|
||||
temp_cwd: true,
|
||||
cwd: Some("npm/run_existing_npm_package/"),
|
||||
copy_temp_dir: Some("npm/run_existing_npm_package/"),
|
||||
});
|
||||
|
||||
itest!(run_existing_npm_package_with_subpath {
|
||||
args:
|
||||
"run --allow-read --node-modules-dir npm:@denotest/bin/cli-esm dev --help",
|
||||
output: "npm/run_existing_npm_package_with_subpath/main.out",
|
||||
envs: env_vars_for_npm_tests(),
|
||||
http_server: true,
|
||||
temp_cwd: true,
|
||||
cwd: Some("npm/run_existing_npm_package_with_subpath/"),
|
||||
copy_temp_dir: Some("npm/run_existing_npm_package_with_subpath/"),
|
||||
});
|
||||
|
||||
#[test]
|
||||
fn parallel_downloading() {
|
||||
let (out, _err) = util::run_and_collect_output_with_args(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "@deno/bin",
|
||||
"name": "@denotest/bin",
|
||||
"version": "0.5.0",
|
||||
"bin": "./cli.mjs"
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"name": "@deno/bin",
|
||||
"name": "@denotest/bin",
|
||||
"version": "0.6.0"
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "@deno/bin",
|
||||
"name": "@denotest/bin",
|
||||
"version": "1.0.0",
|
||||
"bin": {
|
||||
"cli-esm": "./cli.mjs",
|
||||
|
|
3
cli/tests/testdata/npm/run_existing_npm_package/main.out
vendored
Normal file
3
cli/tests/testdata/npm/run_existing_npm_package/main.out
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
Download http://localhost:4545/npm/registry/@denotest/bin
|
||||
Download http://localhost:4545/npm/registry/@denotest/bin/0.5.0.tgz
|
||||
Initialize @denotest/bin@0.5.0
|
6
cli/tests/testdata/npm/run_existing_npm_package/package.json
vendored
Normal file
6
cli/tests/testdata/npm/run_existing_npm_package/package.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"name": "run-existing-npm-package",
|
||||
"dependencies": {
|
||||
"@denotest/bin": "0.5.0"
|
||||
}
|
||||
}
|
5
cli/tests/testdata/npm/run_existing_npm_package_with_subpath/main.out
vendored
Normal file
5
cli/tests/testdata/npm/run_existing_npm_package_with_subpath/main.out
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
Download http://localhost:4545/npm/registry/@denotest/bin
|
||||
Download http://localhost:4545/npm/registry/@denotest/bin/1.0.0.tgz
|
||||
Initialize @denotest/bin@1.0.0
|
||||
dev
|
||||
--help
|
6
cli/tests/testdata/npm/run_existing_npm_package_with_subpath/package.json
vendored
Normal file
6
cli/tests/testdata/npm/run_existing_npm_package_with_subpath/package.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"name": "run-existing-npm-package",
|
||||
"dependencies": {
|
||||
"@denotest/bin": "1.0.0"
|
||||
}
|
||||
}
|
|
@ -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()])
|
||||
|
|
Loading…
Reference in a new issue