@@ -48,18 +48,19 @@ class UglifyJsPlugin {
48
48
...uglifyOptions ,
49
49
} ,
50
50
} ;
51
- this . sourceMapsCache = new WeakMap ( ) ;
52
51
}
53
52
54
- buildError ( err , file , inputSourceMap , requestShortener ) {
53
+ static buildSourceMap ( inputSourceMap ) {
54
+ if ( ! inputSourceMap || ! utils . isSourceMap ( inputSourceMap ) ) {
55
+ return null ;
56
+ }
57
+
58
+ return new SourceMapConsumer ( inputSourceMap ) ;
59
+ }
60
+
61
+ static buildError ( err , file , sourceMap , requestShortener ) {
55
62
// Handling error which should have line, col, filename and message
56
63
if ( err . line ) {
57
- const sourceMapCacheKey = { file } ;
58
- let sourceMap = this . sourceMapsCache . get ( sourceMapCacheKey ) ;
59
- if ( ! sourceMap ) {
60
- sourceMap = new SourceMapConsumer ( inputSourceMap ) ;
61
- this . sourceMapsCache . set ( sourceMapCacheKey , sourceMap ) ;
62
- }
63
64
const original = sourceMap && sourceMap . originalPositionFor ( {
64
65
line : err . line ,
65
66
column : err . col ,
@@ -74,20 +75,11 @@ class UglifyJsPlugin {
74
75
return new Error ( `${ file } from UglifyJs\n${ err . message } ` ) ;
75
76
}
76
77
77
- buildWarning ( warning , file , inputSourceMap , warningsFilter , requestShortener ) {
78
- if ( ! file || ! inputSourceMap ) {
78
+ static buildWarning ( warning , file , sourceMap , warningsFilter , requestShortener ) {
79
+ if ( ! file || ! sourceMap ) {
79
80
return warning ;
80
81
}
81
82
82
- const sourceMapCacheKey = { file } ;
83
-
84
- let sourceMap = this . sourceMapsCache . get ( sourceMapCacheKey ) ;
85
-
86
- if ( ! sourceMap ) {
87
- sourceMap = new SourceMapConsumer ( inputSourceMap ) ;
88
- this . sourceMapsCache . set ( sourceMapCacheKey , sourceMap ) ;
89
- }
90
-
91
83
const match = warningRegex . exec ( warning ) ;
92
84
const line = + match [ 1 ] ;
93
85
const column = + match [ 2 ] ;
@@ -188,10 +180,10 @@ class UglifyJsPlugin {
188
180
tasks . push ( task ) ;
189
181
} catch ( error ) {
190
182
compilation . errors . push (
191
- this . buildError (
183
+ UglifyJsPlugin . buildError (
192
184
error ,
193
185
file ,
194
- inputSourceMap ,
186
+ UglifyJsPlugin . buildSourceMap ( inputSourceMap ) ,
195
187
requestShortener ,
196
188
) ,
197
189
) ;
@@ -208,14 +200,20 @@ class UglifyJsPlugin {
208
200
const { file, input, inputSourceMap, commentsFile } = tasks [ index ] ;
209
201
const { error, map, code, warnings, extractedComments } = data ;
210
202
203
+ let sourceMap = null ;
204
+
205
+ if ( error || ( warnings && warnings . length > 0 ) ) {
206
+ sourceMap = UglifyJsPlugin . buildSourceMap ( inputSourceMap ) ;
207
+ }
208
+
211
209
// Handling results
212
210
// Error case: add errors, and go to next file
213
211
if ( error ) {
214
212
compilation . errors . push (
215
- this . buildError (
213
+ UglifyJsPlugin . buildError (
216
214
error ,
217
215
file ,
218
- inputSourceMap ,
216
+ sourceMap ,
219
217
requestShortener ,
220
218
) ,
221
219
) ;
@@ -275,10 +273,10 @@ class UglifyJsPlugin {
275
273
// Handling warnings
276
274
if ( warnings && warnings . length > 0 ) {
277
275
warnings . forEach ( ( warning ) => {
278
- const builtWarning = this . buildWarning (
276
+ const builtWarning = UglifyJsPlugin . buildWarning (
279
277
warning ,
280
278
file ,
281
- inputSourceMap ,
279
+ sourceMap ,
282
280
this . options . warningsFilter ,
283
281
requestShortener ,
284
282
) ;
0 commit comments