add deterministic chunk ids and make it default
StatsTestCases no longer need to explicitly use natural ids as the defaults are deterministic now too
add concept of id name hints for chunks
add `idHint` option to splitChunks to provide a hint
deduplicated code from different id plugins to IdHelpers
improve behavior of named ids in case of conflicts
remove `name: true` and `automaticNamePrefix` from splitChunks it's not as good as expected
improve named chunk ids to show root modules
Some history:
* `uglifyjs-webpack-plugin` < v1.0 used the minifier `uglify-js`
* however `uglify-js` does not support ES6, which resulted in a fork
called `uglify-es` that was developed in the `uglify-js` repository,
but under the `harmony` branch
* `uglifyjs-webpack-plugin` v1.x switched to `uglify-es` for ES6 support
* however `uglify-es` stopped being maintained:
https://github.com/mishoo/UglifyJS2/issues/3156#issuecomment-392943058
* which led to a fork called `terser` that has incorporated all of
the unmerged PRs and will be where all new development occurs:
https://github.com/fabiosantoscode/terser
* `terser-webpack-plugin` was created, which is the `terser` equivalent
of `uglifyjs-webpack-plugin`:
https://github.com/webpack-contrib/terser-webpack-plugin
* `uglifyjs-webpack-plugin` v2.x will be switching back to `uglify-js`,
so any project that needs to support ES6 now needs to switch to
`terser-webpack-plugin`.
Fixes#7923.
Some history:
* `uglifyjs-webpack-plugin` < v1.0 used the minifier `uglify-js`
* however `uglify-js` does not support ES6, which resulted in a fork
called `uglify-es` that was developed in the `uglify-js` repository,
but under the `harmony` branch
* `uglifyjs-webpack-plugin` v1.x switched to `uglify-es` for ES6 support
* however `uglify-es` stopped being maintained:
https://github.com/mishoo/UglifyJS2/issues/3156#issuecomment-392943058
* which led to a fork called `terser` that has incorporated all of
the unmerged PRs and will be where all new development occurs:
https://github.com/fabiosantoscode/terser
* `terser-webpack-plugin` was created, which is the `terser` equivalent
of `uglifyjs-webpack-plugin`:
https://github.com/webpack-contrib/terser-webpack-plugin
* `uglifyjs-webpack-plugin` v2.x will be switching back to `uglify-js`,
so any project that needs to support ES6 now needs to switch to
`terser-webpack-plugin`.
Fixes#7923.
Supporting the case where options.output.library.root is an Array:
```javascript
output: {
library: {
root: ["MyLibrary", "Sub"],
amd: "my-library",
commonjs: "my-common-library"
},
libraryTarget: "umd"
}
```
deprecate namedModules, hashedModuleIds, namedChunks
add a lot of TODOs for webpack 5
split OccurenceOrderPlugin into separate plugins for modules and chunks
add NaturalChunkOrderPlugin and enable it in development