webpack icon indicating copy to clipboard operation
webpack copied to clipboard

the vendor file changed hash when I add echart to children chunk

Open InvincibleJun opened this issue 7 years ago • 2 comments

Version

2.9.3

Reproduction link

https://github.com/InvincibleJun/demo

Node and OS info

Node 8.9.1 / npm 5.5.1 / Windows 10

Steps to reproduce

for example, I have four pages which use `() => import and use echarts. when all pages use echarts and I packed, it will make a extra chunk file. Then I only use echarts in two pages and I packed, the vendor.[hash].js is different as old file. it ‘s so terrible.

CommonsChunkPlugin options as follows or see the demo

    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendor',
      minChunks (module) {
        // any required modules inside node_modules are extracted to vendor
        return (
          module.resource &&
          /\.js$/.test(module.resource) &&
          module.resource.indexOf(
            path.join(__dirname, '../node_modules')
          ) === 0
        )
      }
    }),
    // extract webpack runtime and module manifest to its own file in order to
    // prevent vendor hash from being updated whenever app bundle is updated
    new webpack.optimize.CommonsChunkPlugin({
      name: 'manifest',
      minChunks: Infinity
    }),
    // This instance extracts shared chunks from code splitted chunks and bundles them
    // in a separate chunk, similar to the vendor chunk
    // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
    new webpack.optimize.CommonsChunkPlugin({
      name: 'app',
      async: 'vendor-async',
      children: true,
      minChunks: 3
    })

What is expected?

the vendor hash not changed

What is actually happening?

the hash changed

InvincibleJun avatar Sep 14 '18 10:09 InvincibleJun

I don't think this issue tracker is meant to be used as a support option. But itsn't it because of minChunks: 3 in CommonsChunkPlugin. It essentially will only placed it in a seperate chunk if 3 chunks uses it. If only 2 it will not do that. If you setr minChunks to 2 that would probably do it for you. But that could have other consequences.

heinzdmx avatar Sep 14 '18 14:09 heinzdmx

I don't think this issue tracker is meant to be used as a support option. But itsn't it because of minChunks: 3 in CommonsChunkPlugin. It essentially will only placed it in a seperate chunk if 3 chunks uses it. If only 2 it will not do that. If you setr minChunks to 2 that would probably do it for you. But that could have other consequences.

the vendor file size did not changed, but it hash value changed.

InvincibleJun avatar Sep 15 '18 04:09 InvincibleJun