Skip to content
vxvx
GitHubBlueskydev.toRSS

vx show

vx show prints the workspace’s resolved configs: what a run would see right now. Configs load through the same path a run uses: from .vx/projects.lock.json, plugin config and project stages applied, so a package a plugin gives tasks to (turbo() or nx() from @vzn/vx-migrate, a temporary start toward native config) shows them. vx show evaluates no config: an edit shows after vx lock, and with no lock it refuses as a run does (no lock: run \vx lock``).

vx show # list every project
vx show <project> # one project's resolved config (`//`: the root project's)
vx show <pkg>#<task> # a single task (`//#<task>`: the root project's)
vx show <task> # that task in every project declaring it
vx show [<task>] --filter <p> # only the projects `vx run --filter <p>` selects
vx show <task> --affected # only the projects whose <task> `vx run <task> --affected` runs
vx show --affected # the run's candidates: the changed projects and their dependents
vx show ... --format json # machine-readable (default: pretty)
$ vx show
project dir tasks tags
app packages/app 3 tasks scope:web
bare packages/bare no vx config
$ vx show app#build
─ app#build ──────────────────────────────────────────────────
dir packages/app
description compile the app
command tsc -b
dependsOn ^build
inputs.files src/**
inputs.env NODE_ENV
outputs.files dist/**
Option Meaning
--filter <p> only the projects vx run --filter <p> selects
--affected[=<ref>] only what vx run --affected would select, below
--format pretty|json json for scripts

The project list. No target: a table, one row per project — name, root-relative dir, task count, and no vx config for config-less packages; one whose tasks all come from plugins reads N tasks from plugins (no vx config), and one a configured project depends on reads 1 task, default build (no vx config): a run loads it for that dependant’s ^build (X-48). A tags column appears when any project has tags. With --format json it’s an array of { name, dir, tags: string[], tasks: string[] }.

A project or task. A report naming the project opens it: its dir, its tags, and config none for a package with no config file. Then vx show <project> prints a block per task, headed by its project#task, with every field the run reads: description, command ((group) for group tasks), dependsOn, timeout, retries, env.passThrough / env.define / env.secret, remote, sandbox, persistent, interactive (yes / no), and the cache block (inputs.files / .workspaceFiles / .env / .tasks / .runtime / .workspaceRuntime, outputs.files / .workspaceFiles). Fields the task does not set are not printed; a value that spans lines (a multi-line command) continues under its first line. --format json emits { name, dir, config } with the config exactly as resolved. vx show &lt;pkg&gt;#&lt;task&gt; narrows to one task ({ name, dir, task, config } in JSON). A bare name that is no project is a task: vx show build prints the block from every project declaring build (an array of the one-task shape in JSON). The default build is declared by none: it counts in the list and vx show <project>, but vx show build, like vx run build --all, does not name it (X-145).

--filter and --affected[=<ref>] narrow the list, or a task’s projects, as vx run selects: turbo ls --affected is vx show --affected, and nx show projects --affected --with-target t is vx show t --affected. Beside a task, --affected lists the projects whose task the run keeps: a change reaches another project only along a task edge, so a dependent whose test has no ^test is not listed (X-147). A task’s list the selection leaves empty says so on stderr (no affected project's test runs); --format json prints []. With no task there is no edge to follow, and the list is the run’s candidates, --filter "...[<base>]"’s: the changed projects and their package dependents. Beside one project or <pkg>#<task> they are refused.

Nx’s spellings name these: vx show projects (when no project or task has that name) and vx show project <name> say vx show and vx show <name>.

Unknown project / task names exit 1 with the same near-miss hint every verb gives (two edits, or a partial name); a bare name that is neither reads unknown project or task: "buidl" — did you mean build?, and a pkg#task hints whole specs (unknown task: "app#bui" — did you mean app#build?). With nothing near, it lists what exists instead: unknown project: "zzz"; projects: app, lib, ; its tasks: app#build, app#test, or ; projects and tasks: … (M-57).

An empty target (vx show '') is refused: omit it to list every project.

In a workspace with no project, the list is empty and vx show says so on stderr (no projects) and names vx init.

Code When
0 success
1 parse error or unknown target
Turborepo, Nx and other product names are trademarks of their owners. vx is not affiliated with or endorsed by them.