2016-06-28 7 views
8

Ich verwende npm run script, um Aufgaben wie "Build" und "Test" zu tun.Kann ich "npm ERR!" Ausgabe bei Verwendung von npm run Skript?

Zum Beispiel meine package.json sieht wie folgt aus:

{ 
    "name": "fulfillment-service", 
    "version": "1.0.0", 
    "description": "Endpoint for CRUD operations on fulfillment status", 
    "main": "src/server.js", 
    "scripts": { 
    "build": "tsc", 
    "test": "tape tests/*.js" 
    }, 
    "dependencies": {}, 
    "devDependencies": { 
    "typescript": "^1.8.10" 
    } 
} 

Als ich npm run build laufen und es erfolgreich ist, der Ausgang ist die folgende:

> [email protected] build d:\code\fulfillment-service 
> tsc 

Als ich npm run build laufen und es schlägt fehl , die Ausgabe ist die folgende:

> [email protected] build d:\code\fulfillment-service 
> tsc 
src/server.ts(51,81): error TS2339: Property 'connection' does not exist on type 'IncomingMessage'. 
npm ERR! Windows_NT 10.0.10586 
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build" 
npm ERR! node v6.2.1 
npm ERR! npm v3.9.3 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] build: `tsc` 
npm ERR! Exit status 2 
npm ERR! 
npm ERR! Failed at the [email protected] build script 'tsc'. 
npm ERR! Make sure you have the latest version of node.js and npm installed. 
npm ERR! If you do, this is most likely a problem with the fulfillment-service package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  tsc 
npm ERR! You can get information on how to open an issue for this project with: 
npm ERR!  npm bugs fulfillment-service 
npm ERR! Or if that isn't available, you can get their info via: 
npm ERR!  npm owner ls fulfillment-service 
npm ERR! There is likely additional logging output above. 
npm ERR! Please include the following file with any support request: 
npm ERR!  d:\code\fulfillment-service\npm-debug.log 

Dies füllt die gesamte Konsole mit nutzlosen Informationen, und ich muss nach oben scrollen, um zu sehen, warum es fehlgeschlagen ist.

Gibt es auf jeden Fall die Zeilen, die während der Entwicklung mit npm ERR! beginnen, zu verbergen?

+2

'npm run build --silent' – gcampbell

+2

Es gibt ein Problem bezüglich der Ausgabe von Run-Skripten. Siehe [npm/8821] (https://github.com/npm/npm/issues/8821) – styfle

Antwort

10

Sie müssen npm run build --silent verwenden.

Dies ist nicht in npm help dokumentiert, npm help run, oder irgendetwas anderes offensichtlich, aber mit einigen Suchen im Internet können Sie herausfinden, dass apparently es in npm help 7 config dokumentiert. Sie können auch die Option loglevel in .npmrc verwenden.

Die --silent (kurz: -s) Option unterdrückt:

  • Die beiden mit > beginnen Linien, die sagen, was befehlen Sie ausführen.
  • npm ERR! Fehler.
  • Erstellen Sie einen npm-debug.log, wenn ein Fehler auftritt.

Hinweis: npm Skripte mit anderen npm-Skripte ausführen können Sie benötigen --silent mehr als einmal zu verwenden. Beispiel package.json:

{ 
    . . . 
    "scripts": { 
    "compile": "tsc", 
    "minify": "uglifyjs --some --options", 
    "build": "npm run compile && npm run minify" 
    } 
} 

Wenn Sie npm run build tun und Typoskript einen Fehler findet, dann werden Sie die npm ERR! von beide Scripts erhalten. Um sie zu unterdrücken, müssen Sie das Build-Skript in npm run compile --silent && npm run minifyund mit npm run build --silent ausführen.

0

es ein Problem auf npm eingereicht ist: run-scripts are too noisy while used in development #8821 (auch in einem Kommentar erwähnt oben)

In der Diskussion in dieser Frage haben sich ein paar Leute einen Alias ​​zu schaffen zum Beispiel erwähnt npr (mit der Option --silent gcampbell beschreibt in seiner/ihrer Antwort). Obwohl --silent einige Probleme vom Typ npm verbergen kann, wie zum Beispiel ein fehlerhaftes Paket.json, scheint dies für den Augenblick eine vernünftige Lösung zu sein.

alias npr='npm run --silent $*' 

Eine andere Sache aus dieser Diskussion, die in der Suche wert sein kann, obwohl es noch ein weiteres Werkzeug ist, ist yarn, die auf einem facebook blog post beschrieben.

0

Wie andere festgestellt haben, das Problem mit --silent ist, verlieren Sie alle Ausgabe. Es gibt eine andere Art und Weise, die für die meisten Fälle zu funktionieren scheint: zu stderr schreiben geschieht dann wird das unterdrückt

npm run something 2>/dev/null 

Wenn einer der Binärdateien Sie ausgeführt werden. Aber die meisten Knoten schreiben auf stdout, also sollte es kein Problem sein.

Natürlich funktioniert dies nur in einer Shell-Umgebung, die die Ausgabeumleitung unterstützt.

Verwandte Themen