1 | const { optimize, NamedChunksPlugin, NamedModulesPlugin } = require('webpack');
|
2 | const NameAllModulesPlugin = require('name-all-modules-plugin');
|
3 | const { createHash } = require('crypto');
|
4 | const { relative } = require('path');
|
5 |
|
6 | const hash = value => createHash('md5').update(value).digest('hex');
|
7 |
|
8 | module.exports = ({ config }) => config
|
9 | .plugin('named-modules')
|
10 | .use(NamedModulesPlugin)
|
11 | .end()
|
12 | .plugin('named-chunks')
|
13 | .use(NamedChunksPlugin, [
|
14 | chunk => (
|
15 | chunk.name ||
|
16 | hash(chunk.modules.map(({ context, request }) => relative(context || '', request || '')).join('_'))
|
17 | )
|
18 | ])
|
19 | .end()
|
20 |
|
21 |
|
22 |
|
23 | .plugin('vendor-chunk')
|
24 | .use(optimize.CommonsChunkPlugin, [{
|
25 | name: 'vendor',
|
26 | minChunks: Infinity
|
27 | }])
|
28 | .end()
|
29 | .plugin('runtime-chunk')
|
30 | .use(optimize.CommonsChunkPlugin, [{ name: 'runtime' }])
|
31 | .end()
|
32 | .plugin('name-all')
|
33 | .use(NameAllModulesPlugin);
|