javascript - Webpack 忽略统计选项

标签 javascript node.js reactjs webpack

更新

@Daniel Khoroshko 的回答解决了我的统计问题。为了将来引用,webpack 有(至少)4 种处理统计信息的方式:

  1. stats 视为常规 webpack 选项 https://webpack.js.org/configuration/stats/
  2. 如果使用 devServer,它必须放在那个对象中(见上面链接中的注释)
  3. 如果使用 Node API,它必须在回调函数中。 https://webpack.js.org/api/node/#stats-object
  4. 正如 Daniel 所指出的,webpack-dev-middleware 覆盖了统计信息,所以对象必须在里面 https://github.com/webpack/webpack-dev-middleware#stats

============================================= =

使用 webpack 3.10,我试图抑制我收到的数百万个 extract-text-webpack-plugin 日志。

我们正在使用 webpack Node API。在我们的 Node 入口点 server.js 中,我们有:

// server.js

const app = express();

if (environment.isLocal) {
  require('./webpackConfig')(app);
} else {
  app.use(compression());
}
// other stuff

我们在 node 中使用 webpack 的地方:

// webpackConfig.js

const webpack = require('webpack');
const config = require('../webpack.config.dev');

module.exports = (app) => {
  const compiler = webpack(config, (err, stats) => {
    stats.toJson("none"); // none for brevity, but not working
  });

  app.use(require('webpack-dev-middleware')(compiler, {
    noInfo: true,
    publicPath: config.output.publicPath
  }));

  app.use(require('webpack-hot-middleware')(compiler));
};

最后,整个配置

// webpack.config.dev.js

module.exports = {
  devtool: 'cheap-module-source-map',
  entry: {
    app: [
      'eventsource-polyfill',
      'webpack-hot-middleware/client?reload=true',
      './src/index'
    ]
  },
  target: 'web',
  output: {
    path: __dirname + '/dist',
    publicPath: '/',
    filename: '[name].js'
  },
  devServer: {
    contentBase: './src'
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoEmitOnErrorsPlugin(),
    new ExtractTextPlugin('[name]-[hash].css'),
    new HtmlWebpackPlugin({
      title: 'annoying webpack', 
      template: './src/index.html', 
      alwaysWriteToDisk: true,
      inject: false
    }),
    new HtmlWebpackHarddiskPlugin()
  ],
  module: {
    rules: [
      {
        test: /\.js$/,
        enforce: 'pre',
        loader: require.resolve('eslint-loader'),
        options: {
          failOnWarning: false,
          failOnError: false
        },
        exclude: /node_modules|dist/
      },
      {
        test: /\.js$/,
        include: [path.join(__dirname, 'src')]
        loader: 'babel-loader'
      }
    ]
  }
};

控制台输出

webpack building...
webpack built c22fd3ae797ecd55eccc in 7410ms
ℹ 「wdm」: Hash: c22fd3ae797ecd55eccc
Version: webpack 3.10.0
Time: 7410ms
                       Asset       Size  Chunks                    
Chunk Names
                      app.js    2.53 MB       0  [emitted]  [big]  
app
app-c22fd3ae797ecd55eccc.css     125 kB       0  [emitted]         
app
                  app.js.map    2.97 MB       0  [emitted]         
app
app-c22fd3ae797ecd55eccc.css.map    4.71 kB       0  [emitted]         
app
                  index.html  275 bytes          [emitted]
   [3] ./node_modules/react/react.js 56 bytes {0} {0} [built]
 [100] ./node_modules/react-dom/index.js 59 bytes {0} {0} [built]
 [107] ./node_modules/react-redux/es/index.js 230 bytes {0} {0} 
[built]
   ..... 
    + 867 hidden modules
    Child html-webpack-plugin for "index.html":
         Asset    Size  Chunks  Chunk Names
    index.html  568 kB       0
    .....   
ℹ 「wdm」: Compiled successfully.
webpack built d7509fff9f1c995bf5ee in 7523ms
ℹ 「wdm」: Hash: d7509fff9f1c995bf5ee
Version: webpack 3.10.0
Time: 7523ms
                       Asset       Size  Chunks                    
Chunk Names
                      app.js    2.53 MB       0  [emitted]  [big]  
app
app-d7509fff9f1c995bf5ee.css     125 kB       0  [emitted]         
app
                  app.js.map    2.97 MB       0  [emitted]         
app
app-d7509fff9f1c995bf5ee.css.map    4.71 kB       0  [emitted]         
app
                  index.html  275 bytes          [emitted]
   [5] ./src/App.js 3.62 kB [built]
   [6] ./src/store/configureStore.js 325 bytes [built]
   .....
    + 867 hidden modules
Child html-webpack-plugin for "index.html":
     Asset    Size  Chunks  Chunk Names
index.html  568 kB       0
   [0] ./node_modules/html-webpack-plugin/lib/loader.js!./src/index.html 646 bytes {0} [built]
   [1] ./node_modules/lodash/lodash.js 540 kB {0} [built]
   [2] (webpack)/buildin/global.js 509 bytes {0} [built]
   [3] (webpack)/buildin/module.js 517 bytes {0} [built]
ℹ 「wdm」: Compiled successfully.

最佳答案

关于统计选项 webpack-dev-middlewarewebpack-dev-server 有自己的统计设置,我想它会覆盖 webpack 自己的设置。我建议试试这个

  app.use(require('webpack-dev-middleware')(compiler, {
    noInfo: true,
    publicPath: config.output.publicPath,
    stats: 'errors-only'
  }));

关于javascript - Webpack 忽略统计选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48452322/

相关文章:

vb.net - 使用 Windows 窗体执行 .exe 文件

javascript - 在提取后调用后重定向

javascript - React-Redux 子组件中的异步数据

node.js - 无法创建到 Node.js socket.io 服务器的跨域 websocket 连接

javascript - 导出时 React.Component 是默认扩展吗?

javascript - sql 注入(inject) - 如何清理程序生成的 sql 子句?

javascript - 导航栏 JavaScript

javascript - 根据预设 "div"和 "width"的内容动态更改 "height"的高度

javascript - OnClick 获取 "id"标签的 "a"属性

javascript - 理解javascript中的setInterval