mirror of
https://github.com/denoland/deno.git
synced 2024-12-25 00:29:09 -05:00
fix(cli/compile): skip bundling for pre-bundled code (#12687)
This commit is contained in:
parent
07520ce013
commit
7b3ba8e3cb
2 changed files with 51 additions and 2 deletions
16
cli/main.rs
16
cli/main.rs
|
@ -424,7 +424,19 @@ async fn compile_command(
|
||||||
|
|
||||||
let graph =
|
let graph =
|
||||||
create_graph_and_maybe_check(module_specifier.clone(), &ps, debug).await?;
|
create_graph_and_maybe_check(module_specifier.clone(), &ps, debug).await?;
|
||||||
let (bundle_str, _) = bundle_module_graph(graph.as_ref(), &ps, &flags)?;
|
|
||||||
|
let source = (graph.as_ref().modules().len() == 1)
|
||||||
|
.then(|| {
|
||||||
|
let root_module = graph.as_ref().modules()[0];
|
||||||
|
match root_module.media_type {
|
||||||
|
MediaType::JavaScript => Some(Ok(root_module.source.to_string())),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.flatten()
|
||||||
|
.unwrap_or_else(|| {
|
||||||
|
bundle_module_graph(graph.as_ref(), &ps, &flags).map(|r| r.0)
|
||||||
|
})?;
|
||||||
|
|
||||||
info!(
|
info!(
|
||||||
"{} {}",
|
"{} {}",
|
||||||
|
@ -439,7 +451,7 @@ async fn compile_command(
|
||||||
|
|
||||||
let final_bin = tools::standalone::create_standalone_binary(
|
let final_bin = tools::standalone::create_standalone_binary(
|
||||||
original_binary,
|
original_binary,
|
||||||
bundle_str,
|
source,
|
||||||
run_flags,
|
run_flags,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
|
|
@ -370,3 +370,40 @@ fn standalone_runtime_flags() {
|
||||||
assert!(util::strip_ansi_codes(&stderr_str)
|
assert!(util::strip_ansi_codes(&stderr_str)
|
||||||
.contains("PermissionDenied: Requires write access"));
|
.contains("PermissionDenied: Requires write access"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
// https://github.com/denoland/deno/issues/12670
|
||||||
|
fn skip_rebundle() {
|
||||||
|
let dir = TempDir::new().expect("tempdir fail");
|
||||||
|
let exe = if cfg!(windows) {
|
||||||
|
dir.path().join("hello_world.exe")
|
||||||
|
} else {
|
||||||
|
dir.path().join("hello_world")
|
||||||
|
};
|
||||||
|
let output = util::deno_cmd()
|
||||||
|
.current_dir(util::testdata_path())
|
||||||
|
.arg("compile")
|
||||||
|
.arg("--unstable")
|
||||||
|
.arg("--output")
|
||||||
|
.arg(&exe)
|
||||||
|
.arg("./001_hello.js")
|
||||||
|
.stdout(std::process::Stdio::piped())
|
||||||
|
.stderr(std::process::Stdio::piped())
|
||||||
|
.spawn()
|
||||||
|
.unwrap()
|
||||||
|
.wait_with_output()
|
||||||
|
.unwrap();
|
||||||
|
assert!(output.status.success());
|
||||||
|
|
||||||
|
//no "Bundle testdata_path/001_hello.js" in output
|
||||||
|
assert!(!String::from_utf8(output.stderr).unwrap().contains("Bundle"));
|
||||||
|
|
||||||
|
let output = Command::new(exe)
|
||||||
|
.stdout(std::process::Stdio::piped())
|
||||||
|
.spawn()
|
||||||
|
.unwrap()
|
||||||
|
.wait_with_output()
|
||||||
|
.unwrap();
|
||||||
|
assert!(output.status.success());
|
||||||
|
assert_eq!(output.stdout, "Hello World\n".as_bytes());
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue