How to suppress output when running npm scripts
I have decided to experiment with npm scripts as a build tool and so far I like it. One issue I'd like to solve is when running a script to run jshint when something doesn't pass linting I get a ton of "npm ERR!" lines. I would like to suppress these as the output from the linter is more meaningful.
Is there a good way to set this globally and is there a way to set it for each script run?
All scripts:
You can fix this by suppressing the output of npm overall, by setting the log level to silent
in a couple ways:
On each npm run
invocation:
npm run --silent <your-script>
Or globally by creating a .npmrc
file(this file can be either in your project directory or your home folder) with the following:
loglevel=silent
Resources:
npm log level config: https://docs.npmjs.com/misc/config#loglevel
npmrc: https://docs.npmjs.com/misc/config#loglevel
Each script, individually:
A simple trick I've used to get around this issue on certain scripts like linting is to append || true
at the end of such scripts. This will work without any npm config changes.
This will ensure that the script will always exit with a 0
status. This tricks npm into thinking the script succeed, hence hiding the ERR
messages. If you want to be more explicit, you can append || exit 0
instead and it should achieve the same result.
{
"scripts": {
"lint": "jshint || true",
}
}
You should be able to use both the --quiet
and --silent
options, as in
npm install --quiet
--quiet
will show stderr and warnings, --silent
should suppress nearly everything
You can also send stdout/stderr to /dev/null
, like so:
npm install > '/dev/null' 2>&1
or less versbose
npm install &> '/dev/null'
npm install --quiet --no-progress
Will keep warnings and errors, and suppress the ADHD progress bar on terminals that support it.
for an individual script that you want to keep silent without having to add --silent
each time, you can make a new script that calls your previous one and adds --silent
.
My example scripts in package.json:
"dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
"dev": "npm run dev-loud --silent"