Skip to content

Commit fce4e6f

Browse files
feat(ls): add dependents to json output (#10367)
### Description Add dependents to the JSON output of `ls` ### Testing Instructions ``` [0 olszewski@macbookpro] /Users/olszewski/code/vercel/turborepo $ turbo_dev ls @turbo/types --output=json WARNING No locally installed `turbo` found. Using version: 2.5.1-canary.1. turbo 2.5.1-canary.1 { "packages": [ { "name": "@turbo/types", "path": "packages/turbo-types", "tasks": { "count": 5, "items": [ { "name": "build", "command": "tsc && pnpm generate-schema" }, { "name": "copy-schema", "command": "cp schemas/schema.json ../turbo/schema.json" }, { "name": "generate-schema", "command": "tsx scripts/generate-schema.ts" }, { "name": "lint", "command": "eslint src/" }, { "name": "lint:prettier", "command": "prettier -c . --cache" } ] }, "dependencies": [ "@turbo/eslint-config", "@turbo/tsconfig" ], "dependents": [ "@turbo/codemod", "@turbo/gen", "@turbo/telemetry", "@turbo/utils", "@turbo/workspaces", "@turborepo-examples-tests/basic-npm", "@turborepo-examples-tests/basic-pnpm", "@turborepo-examples-tests/basic-yarn", "@turborepo-examples-tests/kitchen-sink-npm", "@turborepo-examples-tests/kitchen-sink-pnpm", "@turborepo-examples-tests/kitchen-sink-yarn", "@turborepo-examples-tests/non-monorepo-npm", "@turborepo-examples-tests/non-monorepo-pnpm", "@turborepo-examples-tests/non-monorepo-yarn", "@turborepo-examples-tests/with-svelte-npm", "@turborepo-examples-tests/with-svelte-pnpm", "@turborepo-examples-tests/with-svelte-yarn", "@turborepo-examples-tests/with-tailwind-npm", "@turborepo-examples-tests/with-tailwind-pnpm", "@turborepo-examples-tests/with-tailwind-yarn", "create-turbo", "eslint-config-turbo", "eslint-plugin-turbo", "turbo-ignore", "turborepo-docs", "turborepo-tests-helpers", "turborepo-tests-integration" ] } ] } ```
1 parent 535fc76 commit fce4e6f

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

crates/turborepo-lib/src/commands/ls.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ struct PackageDetails<'a> {
8383
name: &'a str,
8484
tasks: Vec<PackageTask<'a>>,
8585
dependencies: Vec<&'a str>,
86+
dependents: Vec<&'a str>,
8687
}
8788

8889
#[derive(Clone, Serialize)]
@@ -96,6 +97,7 @@ struct PackageDetailsDisplay<'a> {
9697
path: &'a AnchoredSystemPath,
9798
tasks: ItemsWithCount<PackageTask<'a>>,
9899
dependencies: Vec<&'a str>,
100+
dependents: Vec<&'a str>,
99101
}
100102

101103
impl<'a> From<PackageDetails<'a>> for PackageDetailsDisplay<'a> {
@@ -104,6 +106,7 @@ impl<'a> From<PackageDetails<'a>> for PackageDetailsDisplay<'a> {
104106
name: val.name,
105107
path: val.path,
106108
dependencies: val.dependencies,
109+
dependents: val.dependents,
107110
tasks: ItemsWithCount {
108111
count: val.tasks.len(),
109112
items: val.tasks,
@@ -252,11 +255,23 @@ impl<'a> PackageDetails<'a> {
252255
.collect();
253256
package_dep_names.sort();
254257

258+
let mut package_rdep_names: Vec<&str> = package_graph
259+
.ancestors(&package_node)
260+
.into_iter()
261+
.filter_map(|dependent| match dependent {
262+
PackageNode::Root | PackageNode::Workspace(PackageName::Root) => None,
263+
PackageNode::Workspace(PackageName::Other(dep_name)) if dep_name == package => None,
264+
PackageNode::Workspace(PackageName::Other(dep_name)) => Some(dep_name.as_str()),
265+
})
266+
.collect();
267+
package_rdep_names.sort();
268+
255269
Ok(Self {
256270
color_config,
257271
path: package_path,
258272
name: package,
259273
dependencies: package_dep_names,
274+
dependents: package_rdep_names,
260275
tasks: package_json
261276
.scripts
262277
.iter()

crates/turborepo/tests/snapshots/ls__basic_monorepo_get_info_for_package_`my-app`_([email protected]).snap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ expression: query_output
2222
},
2323
"dependencies": [
2424
"util"
25-
]
25+
],
26+
"dependents": []
2627
}
2728
]
2829
}

0 commit comments

Comments
 (0)