Skip to content
This repository was archived by the owner on Dec 5, 2019. It is now read-only.

Commit e94a401

Browse files
refactor: push each warning separately (#277)
1 parent 693e45e commit e94a401

File tree

2 files changed

+34
-30
lines changed

2 files changed

+34
-30
lines changed

src/index.js

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -67,25 +67,30 @@ class UglifyJsPlugin {
6767
return new Error(`${file} from UglifyJs\n${err.message}`);
6868
}
6969

70-
static buildWarnings(warnings, file, sourceMap, warningsFilter, requestShortener) {
71-
if (!sourceMap) {
72-
return warnings;
70+
static buildWarning(warning, file, sourceMap, warningsFilter, requestShortener) {
71+
if (!file || !sourceMap) {
72+
return warning;
7373
}
74-
return warnings.reduce((accWarnings, warning) => {
75-
const match = warningRegex.exec(warning);
76-
const line = +match[1];
77-
const column = +match[2];
78-
const original = sourceMap.originalPositionFor({
79-
line,
80-
column,
81-
});
8274

83-
if (original && original.source && original.source !== file && warningsFilter(original.source)) {
84-
accWarnings.push(`${warning.replace(warningRegex, '')}[${requestShortener.shorten(original.source)}:${original.line},${original.column}]`);
75+
const match = warningRegex.exec(warning);
76+
const line = +match[1];
77+
const column = +match[2];
78+
const original = sourceMap.originalPositionFor({
79+
line,
80+
column,
81+
});
82+
83+
let warningMessage = null;
84+
85+
if (warningsFilter(original.source)) {
86+
warningMessage = warning.replace(warningRegex, '');
87+
88+
if (original && original.source && original.source !== file) {
89+
warningMessage += `[${requestShortener.shorten(original.source)}:${original.line},${original.column}]`;
8590
}
91+
}
8692

87-
return accWarnings;
88-
}, []);
93+
return warningMessage;
8994
}
9095

9196
apply(compiler) {
@@ -257,20 +262,20 @@ class UglifyJsPlugin {
257262
uglifiedAssets.add(compilation.assets[file] = outputSource);
258263

259264
// Handling warnings
260-
if (warnings) {
261-
const warnArr = UglifyJsPlugin.buildWarnings(
262-
warnings,
263-
file,
264-
sourceMap,
265-
this.options.warningsFilter,
266-
requestShortener,
267-
);
268-
269-
if (warnArr.length > 0) {
270-
compilation.warnings.push(
271-
new Error(`${file} from UglifyJs\n${warnArr.join('\n')}`),
265+
if (warnings && warnings.length > 0) {
266+
warnings.forEach((warning) => {
267+
const builtWarning = UglifyJsPlugin.buildWarning(
268+
warning,
269+
file,
270+
sourceMap,
271+
this.options.warningsFilter,
272+
requestShortener,
272273
);
273-
}
274+
275+
if (builtWarning) {
276+
compilation.warnings.push(builtWarning);
277+
}
278+
});
274279
}
275280
});
276281

test/__snapshots__/all-options.test.js.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ exports[`when applied with all options matches snapshot: manifest.d6857f782c13a9
5757

5858
exports[`when applied with all options matches snapshot: warnings 1`] = `
5959
Array [
60-
"Error: main.0c220ec66316af2c1b24.js from UglifyJs
61-
Dropping unused variable a [./test/fixtures/entry.js:4,0]",
60+
"Dropping unused variable a [./test/fixtures/entry.js:4,0]",
6261
]
6362
`;

0 commit comments

Comments
 (0)