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:
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 =
|
||||
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,
|
||||
)?;
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue