mirror of
https://github.com/denoland/deno.git
synced 2025-01-11 16:42:21 -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()
|
.unsafely_ignore_certificate_errors()
|
||||||
.clone(),
|
.clone(),
|
||||||
unstable: self.options.unstable(),
|
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: metadata
|
||||||
.unsafely_ignore_certificate_errors,
|
.unsafely_ignore_certificate_errors,
|
||||||
unstable: metadata.unstable,
|
unstable: metadata.unstable,
|
||||||
|
maybe_package_json_deps: package_json_deps_provider.deps().cloned(),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -448,6 +448,27 @@ itest!(permissions_outside_package {
|
||||||
http_server: true,
|
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]
|
#[test]
|
||||||
fn parallel_downloading() {
|
fn parallel_downloading() {
|
||||||
let (out, _err) = util::run_and_collect_output_with_args(
|
let (out, _err) = util::run_and_collect_output_with_args(
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "@deno/bin",
|
"name": "@denotest/bin",
|
||||||
"version": "0.5.0",
|
"version": "0.5.0",
|
||||||
"bin": "./cli.mjs"
|
"bin": "./cli.mjs"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{
|
{
|
||||||
"name": "@deno/bin",
|
"name": "@denotest/bin",
|
||||||
"version": "0.6.0"
|
"version": "0.6.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "@deno/bin",
|
"name": "@denotest/bin",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
"cli-esm": "./cli.mjs",
|
"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::BootstrapOptions;
|
||||||
use deno_runtime::WorkerLogLevel;
|
use deno_runtime::WorkerLogLevel;
|
||||||
use deno_semver::npm::NpmPackageReqReference;
|
use deno_semver::npm::NpmPackageReqReference;
|
||||||
|
use deno_semver::package::PackageReqReference;
|
||||||
|
|
||||||
|
use crate::args::package_json::PackageJsonDeps;
|
||||||
use crate::args::StorageKeyResolver;
|
use crate::args::StorageKeyResolver;
|
||||||
use crate::errors;
|
use crate::errors;
|
||||||
use crate::npm::CliNpmResolver;
|
use crate::npm::CliNpmResolver;
|
||||||
|
@ -89,6 +91,7 @@ pub struct CliMainWorkerOptions {
|
||||||
pub seed: Option<u64>,
|
pub seed: Option<u64>,
|
||||||
pub unsafely_ignore_certificate_errors: Option<Vec<String>>,
|
pub unsafely_ignore_certificate_errors: Option<Vec<String>>,
|
||||||
pub unstable: bool,
|
pub unstable: bool,
|
||||||
|
pub maybe_package_json_deps: Option<PackageJsonDeps>,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SharedWorkerState {
|
struct SharedWorkerState {
|
||||||
|
@ -356,6 +359,29 @@ impl CliMainWorkerFactory {
|
||||||
let (main_module, is_main_cjs) = if let Ok(package_ref) =
|
let (main_module, is_main_cjs) = if let Ok(package_ref) =
|
||||||
NpmPackageReqReference::from_specifier(&main_module)
|
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
|
shared
|
||||||
.npm_resolver
|
.npm_resolver
|
||||||
.add_package_reqs(&[package_ref.req().clone()])
|
.add_package_reqs(&[package_ref.req().clone()])
|
||||||
|
|
Loading…
Reference in a new issue