1+ const url = require ( 'url' ) ;
2+
13const LastCallWebpackPlugin = require ( 'last-call-webpack-plugin' ) ;
24
35class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
@@ -6,7 +8,7 @@ class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
68 assetProcessors : [
79 {
810 phase : LastCallWebpackPlugin . PHASES . OPTIMIZE_CHUNK_ASSETS ,
9- regExp : ( options && options . assetNameRegExp ) || / \. c s s $ / g ,
11+ regExp : ( options && options . assetNameRegExp ) || / \. c s s ( \? . * ) ? $ / i ,
1012 processor : ( assetName , asset , assets ) =>
1113 this . processCss ( assetName , asset , assets ) ,
1214 }
@@ -15,7 +17,7 @@ class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
1517 } ) ;
1618
1719 this . options . assetNameRegExp = ! options || ! options . assetNameRegExp ?
18- / \. c s s $ / g :
20+ / \. c s s ( \? . * ) ? $ / i :
1921 options . assetNameRegExp ;
2022 this . options . cssProcessor = ! options || ! options . cssProcessor ?
2123 require ( 'cssnano' ) :
@@ -33,6 +35,12 @@ class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
3335 }
3436
3537 processCss ( assetName , asset , assets ) {
38+ const parse = url . parse ( assetName ) ;
39+ const assetInfo = {
40+ path : parse . pathname ,
41+ query : parse . query ? `?${ parse . query } ` : '' ,
42+ } ;
43+
3644 const css = asset . sourceAndMap ? asset . sourceAndMap ( ) : { source : asset . source ( ) } ;
3745 const processOptions = Object . assign (
3846 { from : assetName , to : assetName } ,
@@ -43,7 +51,7 @@ class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
4351 try {
4452 let map = css . map ;
4553 if ( ! map ) {
46- const mapJson = assets . getAsset ( assetName + '. map' ) ;
54+ const mapJson = assets . getAsset ( ` ${ assetInfo . path } . map` ) ;
4755 if ( mapJson ) {
4856 map = JSON . parse ( mapJson ) ;
4957 }
@@ -65,7 +73,7 @@ class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
6573 . cssProcessor . process ( css . source , processOptions , this . options . cssProcessorPluginOptions )
6674 . then ( r => {
6775 if ( processOptions . map && r . map && r . map . toString ) {
68- assets . setAsset ( assetName + '. map' , r . map . toString ( ) ) ;
76+ assets . setAsset ( ` ${ assetInfo . path } . map${ assetInfo . query } ` , r . map . toString ( ) ) ;
6977 }
7078 return r . css ;
7179 } ) ;
0 commit comments