suppress-exit-code
v4.0.0
Published
Cross-platform CLI wrapper that runs any command and exits with zero
Maintainers
Readme
suppress-exit-code
Cross-platform CLI wrapper that runs any command and exits with zero <!-- markdownlint-disable-line MD036 -- a tagline, not a heading -->
## exits with non-zero
crazy-broken-command --some-arg=42
## exits with zero, stdout and stderr are kept as is
suppress-exit-code crazy-broken-command --some-arg=42Motivation: https://github.com/lint-staged/lint-staged/issues/616
Installation
Requires Node 22.13 or newer. If you are on an older Node, stay on v3.
Local
npm install --save-dev suppress-exit-code
## or
yarn add --dev suppress-exit-code
## or
pnpm add --dev suppress-exit-codeGlobal
npm install --global suppress-exit-code
## or
pnpm add --global suppress-exit-codeBehavior
The child command inherits the standard streams, so its output reaches the terminal as is. Whatever the child does, the wrapper exits with zero – a non-zero exit code, a signal and even a command that does not exist are all suppressed:
## exits with zero, prints nothing on macOS and Linux
## (on Windows cmd.exe prints its own “is not recognized” message)
suppress-exit-code definitely-not-a-real-commandThe only non-zero exit comes from the wrapper itself: with no arguments it writes Please specify a child command to run to stderr and exits with one.
Possible improvements
Not implemented yet – a PR is welcome if you need them:
## keep the exit code unless it matches a given allowlist
suppress-exit-code --only=1,2,3 crazy-broken-command --some-arg=42## make sure nothing is ever printed to stderr
## (helps when running a subcommand in sensitive environments)
suppress-exit-code --stderr=pipe-to-stdout crazy-broken-command --some-arg=42
suppress-exit-code --stderr=suppress crazy-broken-command --some-arg=42Development
The package is a single JavaScript file, type-checked via JSDoc.
pnpm install
pnpm test
pnpm lint
pnpm fixTests run the real binary, so they cover the node_modules/.bin shims too.
CI repeats them on Linux, macOS and Windows across the supported Node versions.
