diff --git a/packages/cli/src/dioxus_crate.rs b/packages/cli/src/dioxus_crate.rs index bf9d2f4f9f..4b8ae80e9f 100644 --- a/packages/cli/src/dioxus_crate.rs +++ b/packages/cli/src/dioxus_crate.rs @@ -45,13 +45,36 @@ impl DioxusCrate { TargetKind::Bin }; + let main_package = &krates[package]; + let target_name = target .example .clone() .or(target.bin.clone()) + .or_else(|| { + if let Some(default_run) = &main_package.default_run { + return Some(default_run.to_string()); + } + + let bin_count = main_package + .targets + .iter() + .filter(|x| x.kind.contains(&target_kind)) + .count(); + if bin_count != 1 { + return None; + } + + main_package.targets.iter().find_map(|x| { + if x.kind.contains(&target_kind) { + Some(x.name.clone()) + } else { + None + } + }) + }) .unwrap_or(package_name); - let main_package = &krates[package]; let target = main_package .targets .iter()