Back to Vendure

Vendure CLI

skills/vendure-cli/SKILL.md

3.7.04.2 KB
Original Source

Vendure CLI

The Vendure CLI (@vendure/cli, binary vendure) drives the full lifecycle of a Vendure project. Use it instead of hand-writing boilerplate or guessing build and migration commands.

Detecting a Vendure project

Run CLI commands from a Vendure server package root, or from a monorepo root that contains a Vendure package under packages/, apps/, libs/, services/, or modules/.

dev, build, and start resolve the project directory from the current working directory if it contains @vendure/core, or by scanning those monorepo package directories. add, migrate, and schema analyze the TypeScript project from process.cwd() and require a tsconfig*.json there, so do not assume they work from arbitrary nested subdirectories.

Running the CLI

@vendure/cli is normally a project dependency, so run it through the project's package manager — do not assume npx. Detect the package manager from the lockfile in the project root or workspace root and use the matching runner:

Lockfile in project rootPackage managerRun the CLI with
bun.lock / bun.lockbbunbunx vendure <command>
pnpm-lock.yamlpnpmpnpm exec vendure <command>
yarn.lockyarnyarn vendure <command>
package-lock.jsonnpmnpx vendure <command>
none foundnpm (fallback)npx vendure <command>

If @vendure/cli is installed globally, call vendure <command> directly. List all commands with vendure --help.

The commands/*.md reference files write examples with a bare vendure … — prefix each one with the runner for the detected package manager.

Note: CLI scaffolding that installs packages currently detects yarn.lock, package-lock.json, and pnpm-lock.yaml internally, then falls back to npm. It does not use Bun for those generated dependency installs.

Commands

CommandUse it to…Reference
devRun server + worker + dashboard in development modecommands/dev.md
buildCompile the project for productioncommands/build.md
startRun an already-built projectcommands/start.md
addScaffold a plugin, entity, service, API extension, etc.commands/add.md
migrateGenerate, run or revert database migrationscommands/migrate.md
schemaGenerate a GraphQL schema file from the Admin/Shop APIcommands/schema.md
codemodRun automated code transforms (e.g. UI migrations)commands/codemod.md

Critical rules for agents

  1. Never hardcode npx. Resolve the runner from the project's lockfile — see "Running the CLI" above (bunx, pnpm exec, yarn, npx).
  2. Prompt-capable commands (add, migrate, schema, codemod) need explicit flags/arguments from agents. Run them with explicit inputs so they take the non-interactive path; otherwise the process rejects prompt-only invocations in non-interactive environments. Set VENDURE_CLI_NON_INTERACTIVE=true when calling the CLI from an agent so prompt-only invocations fail fast with examples instead of waiting on a terminal prompt. The exact non-interactive flags are in each command's reference file.
  3. dev, start, and build --watch are long-running processes. Do not run them just to "check" something. Run them only when the user asks, and prefer running them in the background.
  4. Production-only installs may not include @vendure/cli. Generated apps keep the CLI as a dev dependency, so after pruning dev dependencies, start compiled server/worker entrypoints with node ./dist/... or make the CLI a production dependency explicitly.
  5. Read the relevant commands/*.md file before building a command. Valid targets and flags differ per command (e.g. start has no dashboard target; --inspect only applies to dev).