diff --git a/crates/turborepo-lib/src/commands/ls.rs b/crates/turborepo-lib/src/commands/ls.rs index d868f788cce87..a611125446e38 100644 --- a/crates/turborepo-lib/src/commands/ls.rs +++ b/crates/turborepo-lib/src/commands/ls.rs @@ -83,6 +83,7 @@ struct PackageDetails<'a> { name: &'a str, tasks: Vec>, dependencies: Vec<&'a str>, + dependents: Vec<&'a str>, } #[derive(Clone, Serialize)] @@ -96,6 +97,7 @@ struct PackageDetailsDisplay<'a> { path: &'a AnchoredSystemPath, tasks: ItemsWithCount>, dependencies: Vec<&'a str>, + dependents: Vec<&'a str>, } impl<'a> From> for PackageDetailsDisplay<'a> { @@ -104,6 +106,7 @@ impl<'a> From> for PackageDetailsDisplay<'a> { name: val.name, path: val.path, dependencies: val.dependencies, + dependents: val.dependents, tasks: ItemsWithCount { count: val.tasks.len(), items: val.tasks, @@ -252,11 +255,23 @@ impl<'a> PackageDetails<'a> { .collect(); package_dep_names.sort(); + let mut package_rdep_names: Vec<&str> = package_graph + .ancestors(&package_node) + .into_iter() + .filter_map(|dependent| match dependent { + PackageNode::Root | PackageNode::Workspace(PackageName::Root) => None, + PackageNode::Workspace(PackageName::Other(dep_name)) if dep_name == package => None, + PackageNode::Workspace(PackageName::Other(dep_name)) => Some(dep_name.as_str()), + }) + .collect(); + package_rdep_names.sort(); + Ok(Self { color_config, path: package_path, name: package, dependencies: package_dep_names, + dependents: package_rdep_names, tasks: package_json .scripts .iter() diff --git a/crates/turborepo/tests/snapshots/ls__basic_monorepo_get_info_for_package_`my-app`_(npm@10.5.0).snap b/crates/turborepo/tests/snapshots/ls__basic_monorepo_get_info_for_package_`my-app`_(npm@10.5.0).snap index e3e587dac8759..f619b9549a24a 100644 --- a/crates/turborepo/tests/snapshots/ls__basic_monorepo_get_info_for_package_`my-app`_(npm@10.5.0).snap +++ b/crates/turborepo/tests/snapshots/ls__basic_monorepo_get_info_for_package_`my-app`_(npm@10.5.0).snap @@ -22,7 +22,8 @@ expression: query_output }, "dependencies": [ "util" - ] + ], + "dependents": [] } ] }