|
1 |
| -const url = require('url'); |
| 1 | +const path = require('path') |
2 | 2 |
|
3 | 3 | const LastCallWebpackPlugin = require('last-call-webpack-plugin');
|
4 | 4 |
|
@@ -35,10 +35,16 @@ class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
|
35 | 35 | }
|
36 | 36 |
|
37 | 37 | processCss(assetName, asset, assets) {
|
38 |
| - const parse = url.parse(assetName); |
| 38 | + let filename = assetName; |
| 39 | + let query = ''; |
| 40 | + const idx = filename.indexOf('?'); |
| 41 | + if (idx >= 0) { |
| 42 | + query = filename.substr(idx); |
| 43 | + filename = filename.substr(0, idx); |
| 44 | + } |
39 | 45 | const assetInfo = {
|
40 |
| - path: parse.pathname, |
41 |
| - query: parse.query ? `?${parse.query}` : '', |
| 46 | + path: filename, |
| 47 | + query: query, |
42 | 48 | };
|
43 | 49 |
|
44 | 50 | const css = asset.sourceAndMap ? asset.sourceAndMap() : { source: asset.source() };
|
@@ -73,11 +79,16 @@ class OptimizeCssAssetsWebpackPlugin extends LastCallWebpackPlugin {
|
73 | 79 | .cssProcessor.process(css.source, processOptions, this.options.cssProcessorPluginOptions)
|
74 | 80 | .then(r => {
|
75 | 81 | if (processOptions.map && r.map && r.map.toString) {
|
76 |
| - var filename = `${assetInfo.path}.map${assetInfo.query}` |
| 82 | + let filename = `${assetInfo.path}.map${assetInfo.query}` |
77 | 83 | if (processOptions.getFileName) {
|
78 | 84 | filename = processOptions.getFileName(assetInfo)
|
79 | 85 | }
|
80 | 86 | assets.setAsset(filename, r.map.toString());
|
| 87 | + |
| 88 | + if (processOptions.append !== false) { // true or undefined |
| 89 | + let reletivePath = path.relative(path.dirname(assetName), filename).replace(/\\/g, '/') |
| 90 | + r.css += `\n/*# sourceMappingURL=${reletivePath}*/` |
| 91 | + } |
81 | 92 | }
|
82 | 93 | return r.css;
|
83 | 94 | });
|
|
0 commit comments