title: Webpack Manifest Hashing - Vendor not being hashed
body: <p>I have been following the tutorials <a href="http://madole.xyz/asset-hashing-with-webpack/" rel="nofollow noreferrer">here</a> and on this <a href="https://medium.com/@okonetchnikov/long-term-caching-of-static-assets-with-webpack-1ecb139adb95#.ylv8v4oj1" rel="nofollow noreferrer">medium blog</a> and their output always gets hashed so it's like <code>bundle-18734678.js</code> and <code>vendor-32422342.js</code> - my bundle is hashed but for some reason the vendor doesn't get hashed at all. The image below shows just <code>vendor.js</code>. </p>
  
  <p><a href="https://i.stack.imgur.com/11eFO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/11eFO.png" alt="enter image description here"></a></p>
  
  <p>My webpack file is below. </p>
  
  <pre><code>const path = require('path');
  const webpack = require('webpack');
  const ExtractTextPlugin = require("extract-text-webpack-plugin");
  const CompressionPlugin = require("compression-webpack-plugin");
  const ManifestPlugin = require('webpack-manifest-plugin');
  const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');
  
  const vendorPackages = [
    'react', 
    'react-router', 
    'react-redux', 
    'toastr', 
    'lodash'
  ];
  
  module.exports = {
    entry: {
      bundle: [ './src/index.js' ],
      vendor: vendorPackages
    },
  
    output: {
      path: path.join(__dirname, '/dist/prod'),
      publicPath: '/dist/prod',
      filename: '[name]-[chunkhash:8].js'
    }, 
  
    plugins: [ 
        new webpack.DefinePlugin({
          'process.env': {
            NODE_ENV: JSON.stringify('production')
          }
        }),
        new webpack.optimize.CommonsChunkPlugin({
          name: 'vendor',
          filename: 'vendor.js',
          minChunks: Infinity,
        }),
  
        new ManifestPlugin({
          fileName: 'app-manifest.json',
          basePath: '/'
        }),
        new ChunkManifestPlugin({
          filename: "manifest.json",
          manifestVariable: "webpackManifest"
        }),
        new ExtractTextPlugin("styles.css"),
        new webpack.optimize.DedupePlugin(),
        new CompressionPlugin({
            asset: "[path].gz[query]",
            algorithm: "gzip",
            test: /\.js$|\.html$/,
            threshold: 10240,
            minRatio: 0.8
        })
      ],
  
    module: {
      rules: [
        // Test: js &amp; jsx
        {
          test: /\.js(x?)$/,
          exclude: /node_modules/,
          loader: 'babel-loader',
          query: {
            presets: ['react', 'es2015', 'stage-1']
          }
        },
        // Test: html
        {
          test: "\.html$",
  
          use: [
            {
              loader: "html-loader",
              options: {
                /* ... */
              }
            }
          ]
        },
        { test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000' },
        // Test: css
        {
          test: /\.css$/,
          exclude: /node_modules/,
          loader: 'style-loader!css-loader?localIdentName=[name]__[local]__[hash:base64:5]&amp;modules&amp;importLoaders=1&amp;sourceMap',
        }, 
        // Test: url
        {
          test: /\.(jpe?g|gif|png|svg)$/i,
          loader: 'url-loader?limit=10000',
        }, 
        // Test: json
        {
          test: /\.json$/,
          loader: 'json-loader',
        }
      ]
    }
  }
  </code></pre>