22
33const fs = require ( 'fs' ) ;
44const path = require ( 'path' ) ;
5- const AssetsPlugin = require ( 'assets-webpack-plugin' )
5+ const AssetsPlugin = require ( 'assets-webpack-plugin' ) ;
66
77module . exports = ( ) => ( {
88 paths ( paths ) {
@@ -15,6 +15,7 @@ module.exports = () => ({
1515 paths . appBuild = path . join ( paths . appBuild , 'client' ) ;
1616 paths . appHtml = path . join ( fs . realpathSync ( process . cwd ( ) ) , 'public/index-static.html' ) ;
1717 paths . appAssets = path . join ( paths . appBuild , '..' ) ;
18+ paths . appDllAssets = path . join ( paths . appBuild , '..' ) ;
1819 return paths ;
1920 } ,
2021 webpack ( config , NODE_ENV ) {
@@ -41,13 +42,35 @@ module.exports = () => ({
4142 htmlWebpackPlugin . options . filename = 'index-static.html' ;
4243 }
4344
45+ const autoDllPlugin = config . plugins . find (
46+ plugin => plugin . constructor . name === 'AutoDLLPlugin'
47+ ) ;
48+ if ( autoDllPlugin ) {
49+ const pluginOptions = autoDllPlugin . originalSettings ;
50+ const dllSubPlugins = pluginOptions . plugins || [ ] ;
51+ pluginOptions . plugins = dllSubPlugins . concat ( [
52+ new AssetsPlugin ( {
53+ filename : 'dll-assets.json' ,
54+ path : this . paths . appDllAssets ,
55+ fullPath : true ,
56+ processOutput : ( assets ) => {
57+ Object . values ( assets ) . forEach ( mod => {
58+ if ( mod . js ) mod . js = config . output . publicPath + path . join ( pluginOptions . path || '' , mod . js ) ;
59+ } ) ;
60+ return JSON . stringify ( assets ) ;
61+ }
62+ } )
63+ ] ) ;
64+ }
65+
4466 config . plugins . push (
4567 new AssetsPlugin ( {
4668 filename : 'assets.json' ,
4769 path : this . paths . appAssets ,
4870 fullPath : true ,
4971 } )
5072 ) ;
73+
5174 return config ;
5275 } ,
5376 scripts : {
0 commit comments