1
1
const optimizer = require ( './optimizer' ) ;
2
+ let HtmlWebpackPlugin = null ;
3
+ try {
4
+ HtmlWebpackPlugin = require ( 'html-webpack-plugin' ) ;
5
+ } catch {
6
+ // ignore
7
+ }
2
8
3
- const runner = ( compiler , compilation , opts ) => {
4
- const optimize = optimizer ( compiler , compilation , opts ) ;
5
- return ( chunks , callback ) => {
6
- optimize ( chunks ) ;
9
+ const runner = ( opts ) => {
10
+ const optimize = optimizer ( opts ) ;
11
+ return ( compiler , compilation , chunks , callback ) => {
12
+ optimize ( compiler , compilation , chunks ) ;
7
13
callback ( ) ;
8
14
} ;
9
15
}
@@ -17,7 +23,18 @@ class Plugin {
17
23
compiler . hooks . compilation . tap (
18
24
'MangleCssClassPluginHooks' ,
19
25
( compilation ) => {
20
- compilation . hooks . processAssets . tapAsync ( 'MangleCssClassPluginOptimizeChunkAssetsHooks' , runner ( compiler , compilation , this . opts ) ) ;
26
+ if ( ! this . fn ) {
27
+ this . fn = runner ( this . opts ) ;
28
+ }
29
+ if ( HtmlWebpackPlugin ) {
30
+ HtmlWebpackPlugin . getHooks ( compilation ) . afterEmit . tapAsync (
31
+ 'MangleCssClassPluginOptimizeChunkAssetsHooks' ,
32
+ ( data , callback ) => {
33
+ this . fn ( compiler , compilation , { [ data . outputName ] : compilation . assets [ data . outputName ] } , callback ) ;
34
+ } ,
35
+ ) ;
36
+ }
37
+ compilation . hooks . processAssets . tapAsync ( 'MangleCssClassPluginOptimizeChunkAssetsHooks' , ( chunks , callback ) => this . fn ( compiler , compilation , chunks , callback ) ) ;
21
38
}
22
39
) ;
23
40
}
0 commit comments