1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-24 08:09:08 -05:00

fix(cli/compile): skip bundling for pre-bundled code (#12687)

This commit is contained in:
Zheyu Zhang 2021-11-24 06:59:17 +08:00 committed by Bert Belder
parent 07520ce013
commit 7b3ba8e3cb
No known key found for this signature in database
GPG key ID: 7A77887B2E2ED461
2 changed files with 51 additions and 2 deletions

View file

@ -424,7 +424,19 @@ async fn compile_command(
let graph =
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!(
"{} {}",
@ -439,7 +451,7 @@ async fn compile_command(
let final_bin = tools::standalone::create_standalone_binary(
original_binary,
bundle_str,
source,
run_flags,
)?;

View file

@ -370,3 +370,40 @@ fn standalone_runtime_flags() {
assert!(util::strip_ansi_codes(&stderr_str)
.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());
}