1
- const { ReplaceSource } = require ( 'webpack-sources' ) ;
2
1
const chalk = require ( './chalk' ) ;
3
2
const ClassGenerator = require ( './classGenerator' ) ;
4
3
@@ -17,7 +16,7 @@ const validate = (opts, classGenerator) => {
17
16
}
18
17
} ;
19
18
20
- const optimize = ( [ file , originalSource ] , compilation , opts , classGenerator ) => {
19
+ const optimize = ( compiler , [ file , originalSource ] , compilation , opts , classGenerator ) => {
21
20
let classnameRegex ;
22
21
if ( file . match ( / .+ \. c s s .* $ / ) ) {
23
22
classnameRegex = new RegExp ( `\\\.(${ opts . classNameRegExp } )` , 'g' ) ;
@@ -37,6 +36,9 @@ const optimize = ([file, originalSource], compilation, opts, classGenerator) =>
37
36
38
37
const rawSource = originalSource . source ( ) ;
39
38
let source ;
39
+
40
+ const { ReplaceSource } = compiler . webpack . sources ;
41
+
40
42
while ( match = classnameRegex . exec ( rawSource ) ) {
41
43
const originalName = match [ 1 ] ;
42
44
let targetName = originalName
@@ -77,13 +79,13 @@ const optimize = ([file, originalSource], compilation, opts, classGenerator) =>
77
79
if ( ! source ) {
78
80
return ;
79
81
}
80
- compilation . assets [ file ] = source ;
82
+ compilation . updateAsset ( file , source , { minimized : true } ) ;
81
83
} ;
82
84
83
85
const optimizer = ( compiler , compilation , opts ) => ( assets ) => {
84
86
if ( ! opts . classNameRegExp ) throw new Error ( "'classNameRegExp' option is required. e.g. '[c]-[a-z][a-zA-Z0-9_]*'" ) ;
85
87
const classGenerator = new ClassGenerator ( ) ;
86
- Object . entries ( assets ) . forEach ( ( asset ) => optimize ( asset , compilation , opts , classGenerator ) ) ;
88
+ Object . entries ( assets ) . forEach ( ( asset ) => optimize ( compiler , asset , compilation , opts , classGenerator ) ) ;
87
89
validate ( opts , classGenerator ) ;
88
90
}
89
91
0 commit comments