Skip to content

Commit 62d3d0a

Browse files
fix: allowed compressed assets to overwrite original assets using the deleteOriginalAssets option
1 parent 61c3bea commit 62d3d0a

8 files changed

+415
-24
lines changed

src/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,6 @@ class CompressionPlugin {
298298
newInfo.immutable = true;
299299
}
300300

301-
CompressionPlugin.emitAsset(compilation, newName, output, newInfo);
302-
303301
if (this.options.deleteOriginalAssets) {
304302
// eslint-disable-next-line no-param-reassign
305303
CompressionPlugin.deleteAsset(compilation, name);
@@ -317,6 +315,8 @@ class CompressionPlugin {
317315
newOriginalInfo
318316
);
319317
}
318+
319+
CompressionPlugin.emitAsset(compilation, newName, output, newInfo);
320320
})()
321321
);
322322
}

test/__snapshots__/deleteOriginalAssets.test.js.snap.webpack4

Lines changed: 101 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,60 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`"deleteOriginalAssets" option matches snapshot for \`false\` value ({Boolean}): assets 1`] = `
3+
exports[`"deleteOriginalAssets" option should work and delete original assets: assets 1`] = `
4+
Array [
5+
Array [
6+
"09a1a1112c577c2794359715edfcb5ac.png.gz",
7+
73160,
8+
],
9+
Array [
10+
"23fc1d3ac606d117e05a140e0de79806.svg.gz",
11+
393,
12+
],
13+
Array [
14+
"async.async.dcbdb1dd40763448b635.js.gz",
15+
171,
16+
],
17+
Array [
18+
"main.82c6786e32f9c77b44ef.js.gz",
19+
3000,
20+
],
21+
]
22+
`;
23+
24+
exports[`"deleteOriginalAssets" option should work and delete original assets: errors 1`] = `Array []`;
25+
26+
exports[`"deleteOriginalAssets" option should work and delete original assets: warnings 1`] = `Array []`;
27+
28+
exports[`"deleteOriginalAssets" option should work and do not report errors on duplicate assets when original assets were removed: assets 1`] = `
429
Array [
530
Array [
631
"09a1a1112c577c2794359715edfcb5ac.png",
732
78117,
833
],
934
Array [
10-
"09a1a1112c577c2794359715edfcb5ac.png.gz",
11-
73160,
35+
"23fc1d3ac606d117e05a140e0de79806.svg",
36+
393,
37+
],
38+
Array [
39+
"async.async.dcbdb1dd40763448b635.js",
40+
171,
41+
],
42+
Array [
43+
"main.82c6786e32f9c77b44ef.js",
44+
3000,
45+
],
46+
]
47+
`;
48+
49+
exports[`"deleteOriginalAssets" option should work and do not report errors on duplicate assets when original assets were removed: errors 1`] = `Array []`;
50+
51+
exports[`"deleteOriginalAssets" option should work and do not report errors on duplicate assets when original assets were removed: warnings 1`] = `Array []`;
52+
53+
exports[`"deleteOriginalAssets" option should work and keep original assets by default: assets 1`] = `
54+
Array [
55+
Array [
56+
"09a1a1112c577c2794359715edfcb5ac.png",
57+
78117,
1258
],
1359
Array [
1460
"23fc1d3ac606d117e05a140e0de79806.svg",
@@ -37,31 +83,78 @@ Array [
3783
]
3884
`;
3985

40-
exports[`"deleteOriginalAssets" option matches snapshot for \`false\` value ({Boolean}): errors 1`] = `Array []`;
86+
exports[`"deleteOriginalAssets" option should work and keep original assets by default: errors 1`] = `Array []`;
4187

42-
exports[`"deleteOriginalAssets" option matches snapshot for \`false\` value ({Boolean}): warnings 1`] = `Array []`;
88+
exports[`"deleteOriginalAssets" option should work and keep original assets by default: warnings 1`] = `Array []`;
4389

44-
exports[`"deleteOriginalAssets" option matches snapshot for \`true\` value ({Boolean}): assets 1`] = `
90+
exports[`"deleteOriginalAssets" option should work and keep original assets: assets 1`] = `
4591
Array [
92+
Array [
93+
"09a1a1112c577c2794359715edfcb5ac.png",
94+
78117,
95+
],
4696
Array [
4797
"09a1a1112c577c2794359715edfcb5ac.png.gz",
4898
73160,
4999
],
100+
Array [
101+
"23fc1d3ac606d117e05a140e0de79806.svg",
102+
672,
103+
],
50104
Array [
51105
"23fc1d3ac606d117e05a140e0de79806.svg.gz",
52106
393,
53107
],
108+
Array [
109+
"async.async.dcbdb1dd40763448b635.js",
110+
249,
111+
],
54112
Array [
55113
"async.async.dcbdb1dd40763448b635.js.gz",
56114
171,
57115
],
116+
Array [
117+
"main.82c6786e32f9c77b44ef.js",
118+
11645,
119+
],
58120
Array [
59121
"main.82c6786e32f9c77b44ef.js.gz",
60122
3000,
61123
],
62124
]
63125
`;
64126

65-
exports[`"deleteOriginalAssets" option matches snapshot for \`true\` value ({Boolean}): errors 1`] = `Array []`;
127+
exports[`"deleteOriginalAssets" option should work and keep original assets: errors 1`] = `Array []`;
128+
129+
exports[`"deleteOriginalAssets" option should work and keep original assets: warnings 1`] = `Array []`;
130+
131+
exports[`"deleteOriginalAssets" option should work and report errors on duplicate assets: assets 1`] = `
132+
Array [
133+
Array [
134+
"09a1a1112c577c2794359715edfcb5ac.png",
135+
78117,
136+
],
137+
Array [
138+
"23fc1d3ac606d117e05a140e0de79806.svg",
139+
393,
140+
],
141+
Array [
142+
"async.async.dcbdb1dd40763448b635.js",
143+
171,
144+
],
145+
Array [
146+
"main.82c6786e32f9c77b44ef.js",
147+
3000,
148+
],
149+
]
150+
`;
151+
152+
exports[`"deleteOriginalAssets" option should work and report errors on duplicate assets: errors 1`] = `Array []`;
66153

67-
exports[`"deleteOriginalAssets" option matches snapshot for \`true\` value ({Boolean}): warnings 1`] = `Array []`;
154+
exports[`"deleteOriginalAssets" option should work and report errors on duplicate assets: warnings 1`] = `
155+
Array [
156+
"Error: Conflict: Multiple assets emit different content to the same filename 23fc1d3ac606d117e05a140e0de79806.svg",
157+
"Error: Conflict: Multiple assets emit different content to the same filename async.async.dcbdb1dd40763448b635.js",
158+
"Error: Conflict: Multiple assets emit different content to the same filename main.82c6786e32f9c77b44ef.js",
159+
]
160+
`;

test/__snapshots__/deleteOriginalAssets.test.js.snap.webpack5

Lines changed: 101 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,60 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`"deleteOriginalAssets" option matches snapshot for \`false\` value ({Boolean}): assets 1`] = `
3+
exports[`"deleteOriginalAssets" option should work and delete original assets: assets 1`] = `
4+
Array [
5+
Array [
6+
"09a1a1112c577c2794359715edfcb5ac.png.gz",
7+
73160,
8+
],
9+
Array [
10+
"23fc1d3ac606d117e05a140e0de79806.svg.gz",
11+
393,
12+
],
13+
Array [
14+
"async.async.9325220d444b0d653c03.js.gz",
15+
179,
16+
],
17+
Array [
18+
"main.7cdd8fe3ccdaedc3726c.js.gz",
19+
3933,
20+
],
21+
]
22+
`;
23+
24+
exports[`"deleteOriginalAssets" option should work and delete original assets: errors 1`] = `Array []`;
25+
26+
exports[`"deleteOriginalAssets" option should work and delete original assets: warnings 1`] = `Array []`;
27+
28+
exports[`"deleteOriginalAssets" option should work and do not report errors on duplicate assets when original assets were removed: assets 1`] = `
429
Array [
530
Array [
631
"09a1a1112c577c2794359715edfcb5ac.png",
732
78117,
833
],
934
Array [
10-
"09a1a1112c577c2794359715edfcb5ac.png.gz",
11-
73160,
35+
"23fc1d3ac606d117e05a140e0de79806.svg",
36+
393,
37+
],
38+
Array [
39+
"async.async.9325220d444b0d653c03.js",
40+
179,
41+
],
42+
Array [
43+
"main.7cdd8fe3ccdaedc3726c.js",
44+
3933,
45+
],
46+
]
47+
`;
48+
49+
exports[`"deleteOriginalAssets" option should work and do not report errors on duplicate assets when original assets were removed: errors 1`] = `Array []`;
50+
51+
exports[`"deleteOriginalAssets" option should work and do not report errors on duplicate assets when original assets were removed: warnings 1`] = `Array []`;
52+
53+
exports[`"deleteOriginalAssets" option should work and keep original assets by default: assets 1`] = `
54+
Array [
55+
Array [
56+
"09a1a1112c577c2794359715edfcb5ac.png",
57+
78117,
1258
],
1359
Array [
1460
"23fc1d3ac606d117e05a140e0de79806.svg",
@@ -37,31 +83,78 @@ Array [
3783
]
3884
`;
3985

40-
exports[`"deleteOriginalAssets" option matches snapshot for \`false\` value ({Boolean}): errors 1`] = `Array []`;
86+
exports[`"deleteOriginalAssets" option should work and keep original assets by default: errors 1`] = `Array []`;
4187

42-
exports[`"deleteOriginalAssets" option matches snapshot for \`false\` value ({Boolean}): warnings 1`] = `Array []`;
88+
exports[`"deleteOriginalAssets" option should work and keep original assets by default: warnings 1`] = `Array []`;
4389

44-
exports[`"deleteOriginalAssets" option matches snapshot for \`true\` value ({Boolean}): assets 1`] = `
90+
exports[`"deleteOriginalAssets" option should work and keep original assets: assets 1`] = `
4591
Array [
92+
Array [
93+
"09a1a1112c577c2794359715edfcb5ac.png",
94+
78117,
95+
],
4696
Array [
4797
"09a1a1112c577c2794359715edfcb5ac.png.gz",
4898
73160,
4999
],
100+
Array [
101+
"23fc1d3ac606d117e05a140e0de79806.svg",
102+
672,
103+
],
50104
Array [
51105
"23fc1d3ac606d117e05a140e0de79806.svg.gz",
52106
393,
53107
],
108+
Array [
109+
"async.async.9325220d444b0d653c03.js",
110+
265,
111+
],
54112
Array [
55113
"async.async.9325220d444b0d653c03.js.gz",
56114
179,
57115
],
116+
Array [
117+
"main.7cdd8fe3ccdaedc3726c.js",
118+
16494,
119+
],
58120
Array [
59121
"main.7cdd8fe3ccdaedc3726c.js.gz",
60122
3933,
61123
],
62124
]
63125
`;
64126

65-
exports[`"deleteOriginalAssets" option matches snapshot for \`true\` value ({Boolean}): errors 1`] = `Array []`;
127+
exports[`"deleteOriginalAssets" option should work and keep original assets: errors 1`] = `Array []`;
128+
129+
exports[`"deleteOriginalAssets" option should work and keep original assets: warnings 1`] = `Array []`;
130+
131+
exports[`"deleteOriginalAssets" option should work and report errors on duplicate assets: assets 1`] = `
132+
Array [
133+
Array [
134+
"09a1a1112c577c2794359715edfcb5ac.png",
135+
78117,
136+
],
137+
Array [
138+
"23fc1d3ac606d117e05a140e0de79806.svg",
139+
393,
140+
],
141+
Array [
142+
"async.async.9325220d444b0d653c03.js",
143+
179,
144+
],
145+
Array [
146+
"main.7cdd8fe3ccdaedc3726c.js",
147+
3933,
148+
],
149+
]
150+
`;
151+
152+
exports[`"deleteOriginalAssets" option should work and report errors on duplicate assets: errors 1`] = `
153+
Array [
154+
"Error: Conflict: Multiple assets emit different content to the same filename 23fc1d3ac606d117e05a140e0de79806.svg",
155+
"Error: Conflict: Multiple assets emit different content to the same filename async.async.9325220d444b0d653c03.js",
156+
"Error: Conflict: Multiple assets emit different content to the same filename main.7cdd8fe3ccdaedc3726c.js",
157+
]
158+
`;
66159

67-
exports[`"deleteOriginalAssets" option matches snapshot for \`true\` value ({Boolean}): warnings 1`] = `Array []`;
160+
exports[`"deleteOriginalAssets" option should work and report errors on duplicate assets: warnings 1`] = `Array []`;

0 commit comments

Comments
 (0)