How to suppress output when running npm scripts

后端 未结 5 459
日久生厌
日久生厌 2020-12-23 10:48

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

相关标签:
5条回答
  • 2020-12-23 11:23

    You can do this inside your script by removing the event listeners

    #!/usr/bin/env node
    
    process.removeAllListeners('warning');
    
    // Do your thang without triggering warnings
    
    0 讨论(0)
  • 2020-12-23 11:26

    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
    
    0 讨论(0)
  • 2020-12-23 11:29

    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"
    
    0 讨论(0)
  • 2020-12-23 11:31
    npm install --quiet --no-progress 
    

    Will keep warnings and errors, and suppress the ADHD progress bar on terminals that support it.

    0 讨论(0)
  • 2020-12-23 11:44

    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",
       }
    }
    
    0 讨论(0)
提交回复
热议问题