Skip to content

Commit 8b88b39

Browse files
authoredSep 4, 2019
fix: do not run parallel mode when you have only one file (#134)
1 parent 84fed6b commit 8b88b39

5 files changed

+98
-1
lines changed
 

‎src/TaskRunner.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default class TaskRunner {
4343
return;
4444
}
4545

46-
if (this.maxConcurrentWorkers > 1) {
46+
if (this.maxConcurrentWorkers > 1 && tasks.length > 1) {
4747
const workerOptions =
4848
process.platform === 'win32'
4949
? {

‎test/__snapshots__/parallel-option-failure.test.js.snap

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
exports[`parallel option should match snapshot for errors into the "worker-farm" package whe the "cache" option is "true": errors 1`] = `
44
Array [
55
"Error: one.js from Terser
6+
Error: worker-farm failed",
7+
"Error: two.js from Terser
68
Error: worker-farm failed",
79
]
810
`;
@@ -12,6 +14,8 @@ exports[`parallel option should match snapshot for errors into the "worker-farm"
1214
exports[`parallel option should match snapshot for errors into the "worker-farm" package: errors 1`] = `
1315
Array [
1416
"Error: one.js from Terser
17+
Error: worker-farm failed",
18+
"Error: two.js from Terser
1519
Error: worker-farm failed",
1620
]
1721
`;

‎test/__snapshots__/parallel-option.test.js.snap

+25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3+
exports[`parallel option should match snapshot for errors into the "worker-farm" package: errors 1`] = `Array []`;
4+
5+
exports[`parallel option should match snapshot for errors into the "worker-farm" package: warnings 1`] = `Array []`;
6+
37
exports[`parallel option should match snapshot for the "2" value: assets 1`] = `
48
Object {
59
"four.js": "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\\"object\\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\\"default\\",{enumerable:!0,value:e}),2&t&&\\"string\\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\\"a\\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\\"\\",n(n.s=0)}([function(e,t){e.exports=function(){console.log(7)}}]);",
@@ -26,6 +30,27 @@ exports[`parallel option should match snapshot for the "false" value: errors 1`]
2630

2731
exports[`parallel option should match snapshot for the "false" value: warnings 1`] = `Array []`;
2832

33+
exports[`parallel option should match snapshot for the "true" value and only one file passed: assets 1`] = `
34+
Object {
35+
"main.js": "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\\"object\\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\\"default\\",{enumerable:!0,value:e}),2&t&&\\"string\\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\\"a\\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\\"\\",n(n.s=0)}([function(e,t){e.exports=function(){console.log(7)}}]);",
36+
}
37+
`;
38+
39+
exports[`parallel option should match snapshot for the "true" value and only one file passed: errors 1`] = `Array []`;
40+
41+
exports[`parallel option should match snapshot for the "true" value and only one file passed: warnings 1`] = `Array []`;
42+
43+
exports[`parallel option should match snapshot for the "true" value and two files passed: assets 1`] = `
44+
Object {
45+
"one.js": "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\\"object\\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\\"default\\",{enumerable:!0,value:e}),2&t&&\\"string\\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\\"a\\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\\"\\",n(n.s=0)}([function(e,t){e.exports=function(){console.log(7)}}]);",
46+
"two.js": "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\\"object\\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\\"default\\",{enumerable:!0,value:e}),2&t&&\\"string\\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\\"a\\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\\"\\",n(n.s=0)}([function(e,t){e.exports=function(){console.log(7)}}]);",
47+
}
48+
`;
49+
50+
exports[`parallel option should match snapshot for the "true" value and two files passed: errors 1`] = `Array []`;
51+
52+
exports[`parallel option should match snapshot for the "true" value and two files passed: warnings 1`] = `Array []`;
53+
2954
exports[`parallel option should match snapshot for the "true" value: assets 1`] = `
3055
Object {
3156
"four.js": "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\\"object\\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\\"default\\",{enumerable:!0,value:e}),2&t&&\\"string\\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\\"a\\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\\"\\",n(n.s=0)}([function(e,t){e.exports=function(){console.log(7)}}]);",

‎test/parallel-option-failure.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ describe('parallel option', () => {
4848
compiler = createCompiler({
4949
entry: {
5050
one: `${__dirname}/fixtures/entry.js`,
51+
two: `${__dirname}/fixtures/entry.js`,
5152
},
5253
});
5354

‎test/parallel-option.test.js

+67
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,71 @@ describe('parallel option', () => {
140140
expect(warnings).toMatchSnapshot('warnings');
141141
expect(getAssets(stats, compiler)).toMatchSnapshot('assets');
142142
});
143+
144+
it('should match snapshot for the "true" value and only one file passed', async () => {
145+
compiler = createCompiler({
146+
entry: `${__dirname}/fixtures/entry.js`,
147+
});
148+
149+
new TerserPlugin({ parallel: true }).apply(compiler);
150+
151+
const stats = await compile(compiler);
152+
153+
const errors = stats.compilation.errors.map(cleanErrorStack);
154+
const warnings = stats.compilation.warnings.map(cleanErrorStack);
155+
156+
expect(workerFarm.mock.calls.length).toBe(0);
157+
expect(workerFarm.end.mock.calls.length).toBe(0);
158+
159+
expect(errors).toMatchSnapshot('errors');
160+
expect(warnings).toMatchSnapshot('warnings');
161+
expect(getAssets(stats, compiler)).toMatchSnapshot('assets');
162+
});
163+
164+
it('should match snapshot for the "true" value and two files passed', async () => {
165+
compiler = createCompiler({
166+
entry: {
167+
one: `${__dirname}/fixtures/entry.js`,
168+
two: `${__dirname}/fixtures/entry.js`,
169+
},
170+
});
171+
172+
new TerserPlugin({ parallel: true }).apply(compiler);
173+
174+
const stats = await compile(compiler);
175+
176+
const errors = stats.compilation.errors.map(cleanErrorStack);
177+
const warnings = stats.compilation.warnings.map(cleanErrorStack);
178+
179+
expect(workerFarm.mock.calls.length).toBe(1);
180+
expect(workerFarm.mock.calls[0][0].maxConcurrentWorkers).toBe(
181+
os.cpus().length - 1
182+
);
183+
expect(workerFarmMock.mock.calls.length).toBe(
184+
Object.keys(stats.compilation.assets).length
185+
);
186+
expect(workerFarm.end.mock.calls.length).toBe(1);
187+
188+
expect(errors).toMatchSnapshot('errors');
189+
expect(warnings).toMatchSnapshot('warnings');
190+
expect(getAssets(stats, compiler)).toMatchSnapshot('assets');
191+
});
192+
193+
it('should match snapshot for errors into the "worker-farm" package', async () => {
194+
new TerserPlugin({ parallel: true, cache: false }).apply(compiler);
195+
196+
const stats = await compile(compiler);
197+
198+
const errors = stats.compilation.errors.map(cleanErrorStack);
199+
const warnings = stats.compilation.warnings.map(cleanErrorStack);
200+
201+
expect(workerFarm.mock.calls.length).toBe(1);
202+
expect(workerFarmMock.mock.calls.length).toBe(
203+
Object.keys(stats.compilation.assets).length
204+
);
205+
expect(workerFarm.end.mock.calls.length).toBe(1);
206+
207+
expect(errors).toMatchSnapshot('errors');
208+
expect(warnings).toMatchSnapshot('warnings');
209+
});
143210
});

0 commit comments

Comments
 (0)
Failed to load comments.