如何让 webpack 不那么冗长?

Posted

技术标签:

【中文标题】如何让 webpack 不那么冗长?【英文标题】:How to make webpack less verbose? 【发布时间】:2015-09-05 12:17:15 【问题描述】:

韦斯·克雷文的新噩梦

为什么我什至需要对每一点改变都感到恐惧?如何关闭这些通知?!

【问题讨论】:

【参考方案1】:

您可以在 webpack-dev-server 的命令行中添加 --quiet--no-info:http://webpack.github.io/docs/webpack-dev-server.html#webpack-dev-server-cli

如果你在监视模式下使用webpack,你可以在它后面加上| awk 'if ($0 !~ /^ *\[[0-9]*\]/) print else if ($0 ~ /\[built\]/) print',它会打印除了没有重建的文件之外的所有输出。

【讨论】:

如果我不使用开发服务器怎么办? 我需要一些信息,例如我想知道特定的块被重新编译并成功构建,但我不在乎没有改变的块 如果您使用监视模式,您可以 grep for [built],它只会显示已重建的内容。我认为对于其他行为,您需要打开一个问题。 这两个标志对我没有影响。 @VitaliiKorsakov 在下面查看我对express 版本的回答。【参考方案2】:

quietno-info 没有为我做任何有用的事情。 相反,我最终使用了 grep 过滤器。

npm run dev | grep -v "node_modules\|\[built\]"

这将删除任何包含[built]node_modules 的行,这样可以更轻松地查看实际的构建错误,而无需滚动浏览一堆终端输出行。

我已将它放在我的 package.json 的 scripts 部分,因此我可以使用 npm run dev-quiet 来获取过滤后的输出日志。

【讨论】:

【参考方案3】:

我稍微更改了 Haken 的 grep 语句,使其在初始加载和更新 JS 文件时也能正常工作。

这是我的 package.json 中的代码 sn-p。

scripts": 
    "dev": "npm run dev | grep -v \"\\[\\d*\\]\""

这将过滤掉所有包含 [231]、[232] 等模式的行。

【讨论】:

【参考方案4】:

使用 Webpack-Dev-Server 配置文件,您可以挂钩 API。

除非您遇到错误,否则使用 noInfo: true 将禁用信息性消息。

使用quiet: true 会删除所有控制台信息,甚至是错误。

参考:https://webpack.github.io/docs/webpack-dev-server.html#api

【讨论】:

【参考方案5】:

如果您使用express 版本,则可以包含noInfo 选项:

import webpackMiddleware from 'webpack-dev-middleware';

app.use(webpackMiddleware(compiler, 
  noInfo: true
));

【讨论】:

这对我有用。我更喜欢不需要 grep 输出的解决方案。【参考方案6】:

如果你使用karma-webpack,你可以把它放到你的配置文件中:

webpackMiddleware: 
 noInfo: true,
 stats: 'errors-only'

noInfo: false 不向控制台显示任何信息(仅警告和错误)documentation

stats: 'errors-only' 仅在发生错误时输出documentation

【讨论】:

【参考方案7】:

使用--hide-modules 选项运行webpack

【讨论】:

【参考方案8】:

使用 webpack 的统计选项。

例如,要删除块生成的数百行:

stats: 
    chunks: false

要删除有关模块的信息:

stats: 
    chunkModules: false

更多选项请参见the stats documentation。

【讨论】:

【参考方案9】:

您可以使用 Webpack CLI 的 --display option 设置统计输出的详细程度。这是available values。

例如

--display=minimal

【讨论】:

在 Webpack 5 中是--stats=minimal【参考方案10】:

使用webpack-dev-middleware 时,您现在必须在配置选项中使用logLevel 而不是noInfo (as of 12/18/17)。

示例:

require("webpack-dev-middleware")(compiler, 
    logLevel: "warn", // set the logLevel
);

【讨论】:

【参考方案11】:

来自 webpack 文档:

stats 选项可让您精确控制要显示的捆绑信息。如果您不想使用 quiet 或 noInfo,这可能是一个很好的中间立场,因为您需要一些捆绑信息,但不是全部。

对于 webpack-dev-server,这个属性需要在 devServer 对象中。

//example with module.exports in webpack.config.js
module.exports = 
  //...
  stats: 'minimal'
;

//example with dev-sever in webpack.config.js
dev-sever: 
  //...
  stats: 'minimal'

请参阅文档了解其他选项,包括 errors-onlynoneverbose 等。

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

【讨论】:

这个对我有用...将它添加到开发服务器选项中。似乎它覆盖了我最初给出的一般配置。未记录在 devserver 的选项中。我想在某些时候必须清楚一些通用选项可用于开发服务器?哎呀,很多thx 确实记录在案webpack.js.org/configuration/dev-server/#devserver-stats- 我不知道为什么这个答案不高。这是做事的正确方法。特别看这部分:webpack.js.org/configuration/stats/#extending-stats-behaviours 它对我不起作用,所以我猜它没有任何意义。如果我输入 stats: 'verbose' 它不会记录任何信息。控制台几乎是空的。【参考方案12】:

我有同样的问题,我的解决方案不是新的,但详细说明了以前的答案。在您的 webpack.dev.js 中,您可以对 devServer 使用以下配置。关注stats部分:

module.exports = merge(common, 
  mode: 'development',
  devtool: 'source-map',
  devServer: 
    historyApiFallback: true,
    compress: true,
    port: 3420,
    inline: true,
    stats: 
      colors: true,
      chunks: false,
      hash: false,
      version: false,
      timings: false,
      assets: false,
      children: false,
      source: false,
      warnings: true,
      noInfo: true,
      contentBase: './dist',
      hot: true,
      modules: false,
      errors: true,
      reasons: true,
      errorDetails: true,
    ,
  ,
  plugins: [
    new webpack.HotModuleReplacementPlugin(
    ),
  ],
);

【讨论】:

以上是关于如何让 webpack 不那么冗长?的主要内容,如果未能解决你的问题,请参考以下文章

webpack包教不包会性能优化最佳实践

如何让 Flow 与 Vue 2 (webpack) 一起正常工作?

如何编写一个WebPack的插件原理及实践

让 webpack-dev-server 加载的问题

如何让 webpack-dev-server 停止使用 React 延迟/Suspense 代码拆分在内容更改时下载不正确的块?

Webpack 性能优化