Webpack: Stille Ausgabe

82

Ich würde gerne wissen, ob es eine Konfigurationsoption gibt, mit der Webpack angewiesen wird, nur die "wichtigen Informationen" im Terminal zu protokollieren. Ziemlich nur Fehler und Warnungen, nicht alles:

Ausgabe des Terminals mit Webpack

Es gibt einfach so viel Ausgabe! Würde gerne das übliche Zeug unterdrücken und nur die Warnungen / Fehler vom Webpack ausgeben lassen. Möchte eine Lösung für die webpack, webpack-dev-serverund karma-webpack.

Hinweis : Ich habe es versucht noInfo: trueund quiet: trueaber das schien nicht den Trick zu tun.


Bearbeiten: Ich denke, dass dies möglicherweise nicht möglich ist, daher habe ich ein Problem auf github erstellt: https://github.com/webpack/webpack/issues/1191

kentcdodds
quelle
In der Befehlszeile sieht es so aus, als ob die noInfoOption tatsächlich die Umkehrung von --infoist. Die Standardeinstellung lautet truealso: Wenn Sie sie ausführen webpack-dev-server --info false, sollten Sie näher an den gewünschten Ort gelangen.
Naartjie
1
Das scheint es für Webpack-Dev-Server zu tun ... Wenn ich es nur für meine Tests bekommen könnte :-)
Kentcdodds
1
Wenn jemand neugierig ist, ist hier, was ich jetzt ausführe:NODE_ENV=development webpack-dev-server --content-base app/ --port 8888 --colors --progress --info false
Kentcdodds
1
Dies funktioniert auch:NODE_ENV=development webpack-dev-server --content-base app/ --port 8888 --colors --progress --no-info
Kentcdodds
Ah, --no-infoist gut zu wissen, danke
naartjie

Antworten:

56

In meiner Webpack-Konfiguration reduzierte dies meine inkrementelle Erstellungszeit um 8 Sekunden und brachte die Ausgabe zum Schweigen. Der wichtigste istchunks: false

Spielen Sie damit, um Ihren Bedürfnissen zu entsprechen

module.exports = {
 devServer: {
  stats: {
    colors: true,
    hash: false,
    version: false,
    timings: false,
    assets: false,
    chunks: false,
    modules: false,
    reasons: false,
    children: false,
    source: false,
    errors: false,
    errorDetails: false,
    warnings: false,
    publicPath: false
  }
 }
}
TetraDev
quelle
4
Funktioniert super! Die wichtigsten zu deaktivierenden sind hash, version, timings, assets, chunks.
Neal Ehardt
40

👋 Das alles brauchst du nicht. Alles was Sie brauchen ist das

Eigentlich funktionieren diese beiden großartig.

stats: 'errors-only',

am Ende des exportierten Objekts.

Man könnte stats: 'minimal',es auch nur ausgeben, wenn Fehler oder eine neue Kompilierung auftreten. Lesen Sie mehr aus der offiziellen Dokumentation von Webpack.

Ahmad Awais
quelle
31

Ich weiß nicht, wann diese Funktion hinzugefügt wurde, aber ich habe gerade in den Dokumenten festgestellt, dass Sie eine webpackMiddlewareEigenschaft hinzufügen und diese angeben können noInfo: true. Dadurch wird der gesamte Lärm beseitigt! Sie sehen jedoch immer noch die Ausgabe, wenn Fehler auftreten. Yay!

kentcdodds
quelle
10

Sie haben die --displayOption, mit der Sie eine Informationsmenge auswählen können, die angezeigt werden soll.

Von webpack --help:

--display: Select display preset
[string] [choices: "", "verbose", "detailed", "normal", "minimal", "errors-only", "none"]

Wenn Sie die angezeigten Informationen genauer konfigurieren möchten, können Sie Ihr Webpack auch mit dem Statistikfeld in Ihrem konfigurieren webpack.config.js.

Papillon
quelle
8

Wenn Sie das verwenden webpack-dev-middleware, können Sie das noInfo: truein ein Objekt als zweiten Parameter werfen . Angenommen, Sie haben auch einen Knoten- / Express-Server ausgeführt.

Geben Sie hier die Bildbeschreibung ein

Prost.

Leocreatini
quelle
Ich poste dies für andere Personen mit einem ähnlichen Problem in einer etwas anderen Konfiguration, da die Google-Suche sie hierher führt.
Leocreatini
Sie können noInfo: truedas devServerKonfigurationselement auch in webpack.config.js hinzufügen.
Chad Johnson
Nur einer, der für mich funktioniert hat. Funktioniert auch mit webpackMiddleware. Danke, Mistausgabe hat mich verrückt gemacht.
Doa
2

Empfehlen Sie die unten stehende Statistikkonfiguration, um wichtige Protokolle zu führen und nutzlose Informationen zu entfernen.

stats: {
  cached: false,
  cachedAssets: false,
  chunks: false,
  chunkModules: false,
  chunkOrigins: false,
  modules: false
}
aaron.xiao
quelle
1

Wenn Sie die Webpack-API direkt verwenden und aufrufen stats.toString(), können Sie Parameter übergeben, um das Rauschen zu verringern :

webpack(config).watch(100, (err, stats) => {
  console.log(stats.toString({chunks: false}))
})
Kai Sellgren
quelle
1

Was Sie hier interessiert, ist das Modul (Teil) des Webpacks . Grundsätzlich ist es dieses Modul, das die Ausgabe erzeugt . Die Ausgabe enthält standardmäßig hauptsächlich eine Liste der Assets und eine Liste der Module. Sie können Module mit Direktive ausblenden . In Bezug auf Vermögenswerte besteht keine ähnliche Option. Es gibt aber Voreinstellungen . Sie können die Voreinstellung mit der Option angeben . Und vorgegeben , dass Haut Vermögen ist ... .stats --hide-modules--displaynone

Es gibt eine andere Möglichkeit, Statistiken zu beeinflussen : webpack.config.js. Hinzufügen stats: {assets: false, modules: false}, um die Ausgabe erheblich zu reduzieren. Oder stats: 'none'um Webpack ganz zum Schweigen zu bringen. Nicht dass ich es empfehlen würde. Im Allgemeinen errors-onlyist ein Weg zu gehen. Um es zu beeinflussen, webpack-dev-serversetzen Sie es unter devServerSchlüssel.

Webpack 2.x hat keine --displayOption. Und die einzige Möglichkeit, Module auszublenden, ist der --hide-modulesSchalter. Damit meine ich, dass die Angabe stats: 'errors-only'oder stats: {modules: false}in der Konfiguration keine Auswirkung hat. Da dieser Code all das überschreibt.

Denn webpack-dev-serveres gibt auch --no-infound --quietOptionen.

Weitere Einblicke in die Funktionsweise. webpack-clierstellt ein outputOptionsObjekt . Wenn die Kompilierung abgeschlossen ist, werden die Statistiken in Zeichenfolgen konvertiert und ausgegeben . Stats.toStringkonvertiert Statistiken in JSON und konvertiert dann JSON in Zeichenfolge . Hier sehen Sie die Standardeinstellungen .

x-yuri
quelle