Brackets in a glob mean brackets
Brackets in a glob mean brackets
In a vx glob, [jt] matches one character, as in Turbo, Nx and your shell. A Next.js route folder like app/[id] needs escaping.
// the vx blog
Posts tagged dx.
Brackets in a glob mean brackets
In a vx glob, [jt] matches one character, as in Turbo, Nx and your shell. A Next.js route folder like app/[id] needs escaping.
One name per setting
Every vx setting has one name. run.retries is VX_RUN_RETRIES and --retries. Learn one, know all three.
The reference at your version
vx docs <query> searches the docs for the vx version you run, so the answer matches your binary.
From npm scripts or Vite Task
One command turns package.json scripts or Vite Task config into vx tasks. npm pre and post hooks keep their order.
The basics, done carefully
vx run picks the project you are in, never waits on a picker in a pipe, and gives each task its own fold on GitHub Actions.
An upgrade you can trust
vx upgrade checks npm’s registry signature and the SHA-512 before it replaces anything, upgrades an npm, pnpm, bun or yarn install through that package manager, and swaps back if the new binary does not start.
Extend vx in an afternoon
One command scaffolds a working plugin and its test. Bring your own remote cache through one small interface, hook setup and teardown around the run, or drive vx from your own scripts with run() and planRun().
See inside a run
Why did this task run? What did the run do? Where did the time go? One command answers each, in text or JSON.
One failure, and exactly what it takes down
A broken build skips only what depends on it, and each skip names the failure. One flag picks fail-fast or run-everything.
When a task misbehaves
A task hangs, gets killed, prompts for input, or calls vx run on itself. vx tells you what happened in one line.
Say exactly which tasks to run
dependsOn says what a task needs first, --filter says which projects to run. A name that matches nothing stops the run before it starts.
Output that fits the run
One task shows all its output. Many tasks show one line each for what ran. CI shows everything. You can always pick.
Built for the agent at the keyboard
vx gives coding agents JSON with a schema for every answer, keeps a failure's log and files, and stores run history in a SQLite file.
One command to know your workspace
vx info answers the first questions of every bug report on one screen: versions, workers, memory, cache size, flaky tasks, sandbox.
A refusal an agent can read
When vx refuses, it prints a stable code and a link to the fix. Scripts and agents check the code, not the wording.
The small things
Mistype a flag or a task and vx prints the fix. Forget the task and you get a picker. Tab completes the rest.
A run you can read
One line per task while it runs, the full log only for what failed, and one summary block at the end. Nothing prints below it.
The last run, on request
The terminal scrolled away? vx last --failed shows the run that broke and the command that runs only what failed.
See what a task really is
vx show prints a task the way the run sees it, after presets and plugins changed it. No guessing what your TypeScript config turned into.
Run only what a change reaches
vx run test --affected runs what your branch changed and everything downstream of it, and says why each task was picked.
See the plan before you run it
vx run --dry shows which tasks would come from the cache and which would run, with keys and expected times. Nothing runs.
vx why names the change that made a task run again
You changed one file and got twelve rebuilds. `vx why` names the part of the cache key that changed, and follows it to the root cause.
Config in TypeScript, and why there are no named inputs
A vx.config.ts is TypeScript, so you share settings with an import. That removes globalDependencies and namedInputs from the schema.
One binary, nothing to install underneath
vx ships as one self-contained file per platform. No Node to pick, no Bun to install, no daemon.
Dev servers as graph nodes: readiness instead of sleep
vx waits for the line your dev server prints before starting the tests, and stops the server when the run ends. No sleep 5.
Watch: a content gate, not an event storm
vx watch lets the cache key decide what runs. A README edit runs nothing, a source edit runs exactly what it reaches.
Flaky is a claim only declared inputs can back
vx calls a task flaky only when the same inputs both passed and failed. Your local run history is enough, no service needed.