Webpack:静默输出

问题描述 投票:0回答:13

我想知道是否有一个配置选项可以告诉 webpack 仅将“重要信息”记录到终端。几乎只是错误和警告,而不是全部:

output of terminal with webpack

输出实在是太多了!希望抑制常见的内容,只让 webpack 输出警告/错误。想要

webpack
webpack-dev-server
karma-webpack
的解决方案。

注意:我尝试了

noInfo: true
quiet: true
,但这似乎没有成功。


编辑:我认为这可能不可能,所以我在github上创建了一个问题:https://github.com/webpack/webpack/issues/1191

webpack webpack-dev-server
13个回答
67
投票

在我的 webpack 配置中,这样做将我的增量构建时间减少了 8 秒并沉默了输出。主要的是

chunks: false

使用它来满足您的需求

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
  }
 }
}

59
投票

实际上,这两个效果很好。

stats: 'errors-only',

在导出对象的末尾。

也可以使用

stats: 'minimal',
,它仅在发生错误或新编译时输出。阅读更多内容 Webpack 官方文档。


33
投票

我不知道这个功能是什么时候添加的,但我只是在文档中注意到你可以添加一个

webpackMiddleware
属性,然后你可以指定
noInfo: true
。这样做可以消除所有噪音!但出现错误时您仍然会看到输出。耶!


17
投票

您可以使用

--display
选项来选择要显示的信息量级别。

来自

webpack --help

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

如果您想更精确地配置显示的信息,您还可以使用 webpack.config.js 中的

stats
字段配置您的 webpack。


10
投票

这些天

noInfo
quiet
stats
已被 Webpack 配置根目录中的 infrastructionLogging 取代:

// webpack.config.js
...
infrastructureLogging: {
  level: 'error',
},

9
投票

如果您使用

webpack-dev-middleware
,您可以将
noInfo: true
作为第二个参数扔进对象中。 还假设您还运行着一个节点/express 服务器。

干杯。


8
投票

Webpack

  ...
  stats: {
    modules: false,
  },
  ...

开发服务器

  ...
  devServer: {
    stats: {
      modules: false,
    },
  },
  ...

参考

https://webpack.js.org/configuration/stats/


4
投票

您在这里感兴趣的是Webpack

stats模块(部分)。基本上,正是这个模块产生输出。默认情况下的输出主要包含资产列表和模块列表。您可以使用
--hide-modules
指令隐藏模块。关于资产,不存在类似的选择。但有预设。您可以使用
--display
选项指定预设。隐藏资产的预设是...
none
.

还有另一种影响统计数据的方法:

webpack.config.js
。添加
stats: {assets: false, modules: false}
可显着减少产量。或者
stats: 'none'
让 Webpack 完全沉默。并不是说我推荐它。一般来说,
errors-only
是一种可行的方法。要使其影响
webpack-dev-server
,请将其放在
devServer
键下。

Webpack 2.x 没有

--display
选项。隐藏模块的唯一方法是
--hide-modules
开关。我的意思是在配置中指定
stats: 'errors-only'
stats: {modules: false}
没有任何效果。因为this这段代码覆盖了所有这些。

对于

webpack-dev-server
还有
--no-info
--quiet
选项。

更深入地了解其工作原理。

webpack-cli
创建
outputOptions
对象
。编译完成后,它将统计信息转换为字符串输出
Stats.toString
stats 转换为 json,然后将 json 转换为 string。在这里您可以看到默认值


2
投票

推荐下面的统计配置,这将保留重要的日志并删除无用的信息。

stats: {
  cached: false,
  cachedAssets: false,
  chunks: false,
  chunkModules: false,
  chunkOrigins: false,
  modules: false
}

1
投票

如果您直接使用 Webpack API,并且调用

stats.toString()
,那么您可以传递参数来降低噪音:

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

1
投票

使用 Webpack 5,我必须从 devServer 中删除统计信息并将其添加为基本配置属性。 所有相关统计信息都可以在此处找到以进行其他配置https://webpack.js.org/configuration/stats/

https://webpack.js.org/configuration/other-options/#infrastructionlogging

以下内容对我有用:(我使用友好错误)

{
  stats: 'errors-only',
  infrastructureLogging: {
    level: 'none',
  },
  devServer:{
    // other config
  }
}

您还可以更具体地了解使用对象显示的内容。

{
  stats: {
    entrypoints: false,
    colors: true,
    assets: false,
    chunks: false,
    modules: false,
  },
  infrastructureLogging: {
    level: 'none',
  },
  devServer:{
    // other config
  }
}

0
投票

Webpack v5

“最静音”配置:

infrastructureLogging: { level: 'error' },
stats: 'minimal',

文档:

infrastructureLogging
stats


0
投票

webpack --stats errors-only
是您可能需要的命令行标志 (v5)。

© www.soinside.com 2019 - 2024. All rights reserved.