Uitvoer onderdrukken bij het uitvoeren van npm-scripts

Ik heb besloten om te experimenteren met npm-scripts als bouwtool en tot nu toe bevalt het me goed. Een probleem dat ik zou willen oplossen, is dat wanneer ik een script uitvoer om jshint uit te voeren wanneer iets niet door de linting gaat, ik een hoop “npm ERR!” lijnen. Ik zou deze willen onderdrukken omdat de uitvoer van de linter zinvoller is.

Is er een goede manier om dit globaal in te stellen en is er een manier om dit voor elke scriptuitvoering in te stellen?


Antwoord 1, autoriteit 100%

Alle scripts:

Je kunt dit oplossen door de uitvoer van npm in het algemeen te onderdrukken, door het logniveau op een paar manieren op silentte zetten:

Bij elke npm runaanroep:

npm run --silent <your-script>

Of globaal door een .npmrc-bestand te maken (dit bestand kan zich in uw projectdirectory of in uw thuismap bevinden) met het volgende:

loglevel=silent

Bronnen:

npm logniveau-configuratie: https://docs.npmjs.com/misc/config#loglevel

npmrc: https://docs.npmjs.com/misc/config#loglevel

Elk script, afzonderlijk:

Een eenvoudige truc die ik heb gebruikt om dit probleem bij bepaalde scripts, zoals linting, te omzeilen, is door || trueaan het einde van dergelijke scripts. Dit werkt zonder npm-configuratiewijzigingen.

Dit zorgt ervoor dat het script altijd wordt afgesloten met een 0-status. Dit zorgt ervoor dat npm denkt dat het script slaagt, waardoor de ERR-berichten worden verborgen. Als u explicieter wilt zijn, kunt u || exit 0en het zou hetzelfde resultaat moeten bereiken.

{
  "scripts": {
    "lint": "jshint || true",
   }
}

Antwoord 2, autoriteit 31%

Je zou zowel de --quietals --silentopties moeten kunnen gebruiken, zoals in

npm install --quiet

--quietzal stderr en waarschuwingen tonen, --silentzou bijna alles moeten onderdrukken

Je kunt stdout/stderr ook naar /dev/nullsturen, zoals:

npm install > '/dev/null' 2>&1

of minder uitgebreid

npm install &> '/dev/null'

Antwoord 3, autoriteit 10%

npm install --quiet --no-progress 

Bewaar waarschuwingen en fouten, en onderdruk de ADHD-voortgangsbalk op terminals die dit ondersteunen.


Antwoord 4

voor een individueel script dat je wilt zwijgen zonder elke keer --silenttoe te voegen, kun je een nieuw script maken dat je vorige aanroept en --silent.

Mijn voorbeeldscripts in package.json:

   "dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
    "dev": "npm run dev-loud --silent"

Antwoord 5

Je kunt dit in je script doen door de gebeurtenislisteners te verwijderen

#!/usr/bin/env node
process.removeAllListeners('warning');
// Do your thang without triggering warnings

Other episodes