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 silent
te zetten:
Bij elke npm run
aanroep:
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 || true
aan 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 0
en het zou hetzelfde resultaat moeten bereiken.
{
"scripts": {
"lint": "jshint || true",
}
}
Antwoord 2, autoriteit 31%
Je zou zowel de --quiet
als --silent
opties moeten kunnen gebruiken, zoals in
npm install --quiet
--quiet
zal stderr en waarschuwingen tonen, --silent
zou bijna alles moeten onderdrukken
Je kunt stdout/stderr ook naar /dev/null
sturen, 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 --silent
toe 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