scpm
Usage: scpm [FLAGS] <SUBCOMMAND>
Version: 1.17.1
- Usage:
scpm [FLAGS] <SUBCOMMAND>
Global Flags
-C --dir <DIR>
Change to directory before running (like make -C or mise --cd)
-F --filter… <PATTERN>
Scope command execution to workspace packages matching PATTERN.
Supports exact names (my-pkg), globs (@scope/*, *-plugin), paths (./packages/api), graph selectors (pkg..., ...pkg), git-ref selectors ([origin/main]), and exclusions (!pkg). Repeatable; matches are OR-ed.
Currently honored by run, test, start, stop, restart, install, exec, list, publish, deploy, add, remove, update, why, and implicit-script invocations.
-r --recursive
Run the command across every workspace package.
Equivalent to --filter=*; if --filter is also given, --recursive is a no-op and the explicit filter wins. Honored by the same commands as --filter.
-v --verbose
Enable verbose/debug logging (shortcut for --loglevel debug)
-V --version
Print version and check for updates.
Manual flag so we can run the async update notifier alongside the version print — clap's auto Action::Version exits inside parse_from, before the tokio runtime is built.
--color
Force colored output even when stderr is not a TTY.
Overrides NO_COLOR / CLICOLOR=0. Mutually exclusive with --no-color.
--diag <MODE>
Enable cold-install deep diagnostics. Modes: summary — sum_ms / mean / max / %wall table at end trace — summary + critical path + starvation + what-if + lifecycle live — like trace, plus print every span >= 100ms to stderr live full — like trace, plus write JSONL trace to a file (defaults to ./scpm-diag.jsonl)
Quick form: --diag with no value defaults to trace. Output file path can be set via --diag-file. Threshold for live mode via --diag-threshold-ms.
--diag-file <PATH>
Path for --diag full JSONL trace (default: ./scpm-diag.jsonl)
--diag-threshold-ms <MS>
Live-mode threshold: only print spans whose duration is >= N ms (default 100)
--fail-if-no-match
Error when a workspace selector matches no packages.
Accepted globally; selected commands already fail on empty matches.
--filter-prod… <PATTERN>
Production-only variant of --filter.
Same selector grammar as --filter, but graph walks (pkg..., ...pkg) only follow dependencies / optionalDependencies / peerDependencies edges — devDependencies (and packages reachable solely through them) are skipped. Non-graph forms (exact name, glob, path, [git-ref]) behave identically to --filter. Repeatable; can be combined with --filter.
--loglevel <LEVEL>
Set the log level. Logs at or above this level are shown
Choices:
tracedebuginfowarnerrorsilent
--no-color
Disable colored output.
Overrides FORCE_COLOR / CLICOLOR_FORCE and sets NO_COLOR=1 so downstream libraries (miette, clx, child processes) all see the same choice.
--reporter <NAME>
Output format: default, append-only, ndjson, silent.
default renders the progress UI when stderr is a TTY; append-only disables the progress UI in favor of plain line-at-a-time logs; ndjson swaps the tracing fmt layer for the JSON formatter (one JSON object per log event on stderr) and is what tooling wrappers should consume; silent suppresses all non-error output (alias for --loglevel silent).
Choices:
defaultappend-onlyndjsonsilent
--silent
Suppress all non-error output (alias for --loglevel silent)
--workspace-root
Run from the workspace root regardless of the current package
Subcommands
scpm add [FLAGS] [PACKAGES]…scpm approve-builds [--all] [-g --global] [PKG]…scpm audit [FLAGS]scpm bin [-g --global]scpm cache <SUBCOMMAND>scpm cache delete <PATTERNS>…scpm cache list [PATTERNS]…scpm cache list-registriesscpm cache prune [--age-days <AGE_DAYS>] [--dry-run]scpm cache view [--json] <NAME>scpm cat-file <HASH>scpm cat-index <PACKAGE>scpm check [--json]scpm ci [FLAGS]scpm clean [-l --lockfile]scpm completion <SHELL>scpm config [FLAGS] <SUBCOMMAND>scpm config delete [--local] [--location <LOCATION>] <KEY>scpm config explain <KEY>scpm config find <QUERY>…scpm config get [FLAGS] <KEY>scpm config list [FLAGS]scpm config set [--local] [--location <LOCATION>] <KEY> <VALUE>scpm config tuiscpm create [FLAGS] [PARAMS]…scpm dedupe [FLAGS]scpm deploy [FLAGS] <TARGET>scpm deprecate [FLAGS] <PACKAGE> <MESSAGE>scpm deprecations [FLAGS]scpm diag <SUBCOMMAND>scpm diag analyze <PATH>scpm diag compare [--min-delta-ms <MIN_DELTA_MS>] [--min-pct <MIN_PCT>] <A> <B>scpm dist-tag [FLAGS] <SUBCOMMAND>scpm dist-tag add [--otp <OTP>] <SPEC> [TAG]scpm dist-tag ls [PACKAGE]scpm dist-tag rm [--otp <OTP>] <PACKAGE> <TAG>scpm dlx [FLAGS] [PARAMS]…scpm doctor [-J --json]scpm exec [FLAGS] <BIN> [ARGS]…scpm fetch [FLAGS]scpm find-hash [FLAGS] <HASH>scpm ignored-builds [-g --global]scpm import [--force] [--lockfile-only]scpm init [FLAGS]scpm install [FLAGS]scpm licenses [FLAGS]scpm link [-g --global] [PACKAGE]scpm list [FLAGS] [PATTERN]scpm login [FLAGS]scpm logout [FLAGS]scpm outdated [FLAGS] [PATTERN]scpm pack [FLAGS]scpm patch [--edit-dir <DIR>] [--ignore-existing] <PACKAGE>scpm patch-commit [--patches-dir <DIR>] <DIR>scpm patch-remove [PACKAGES]…scpm peers <SUBCOMMAND>scpm peers check [--json]scpm prune [-P --prod] [--no-optional]scpm publish [FLAGS]scpm purge [-l --lockfile]scpm query [FLAGS] <SELECTOR>scpm rebuild [PACKAGE]…scpm recursive [ARGS]…scpm remove [FLAGS] [PACKAGES]…scpm restart [FLAGS] [ARGS]…scpm root [-g --global]scpm run [FLAGS] [SCRIPT] [ARGS]…scpm sbom [FLAGS]scpm sponsorsscpm stage [FLAGS]scpm start [FLAGS] [ARGS]…scpm stop [FLAGS] [ARGS]…scpm store <SUBCOMMAND>scpm store add <PACKAGES>…scpm store pathscpm store prunescpm store statusscpm test [FLAGS] [ARGS]…scpm undeprecate [FLAGS] <PACKAGE>scpm unlink [-g --global] [PACKAGE]scpm unpublish [FLAGS] [SPEC]scpm update [FLAGS] [PACKAGES]…scpm version [FLAGS] [NEW_VERSION]scpm view [FLAGS] <PACKAGE> [FIELD]scpm why [FLAGS] <PACKAGE>
