Skip to content

Commit 15ddaab

Browse files
authored
fix: allows minimizers to set worker thread support and don't use worker thread for swc and esbuild (#619)
1 parent 8a4c3fb commit 15ddaab

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-1
lines changed

src/index.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ const { minify } = require("./minify");
105105
/**
106106
* @typedef {object} MinimizeFunctionHelpers
107107
* @property {() => string | undefined} [getMinimizerVersion]
108+
* @property {() => boolean | undefined} [supportsWorkerThreads]
108109
*/
109110

110111
/**
@@ -412,7 +413,12 @@ class TerserPlugin {
412413
(
413414
new Worker(require.resolve("./minify"), {
414415
numWorkers: numberOfWorkers,
415-
enableWorkerThreads: true,
416+
enableWorkerThreads:
417+
typeof this.options.minimizer.implementation
418+
.supportsWorkerThreads !== "undefined"
419+
? this.options.minimizer.implementation.supportsWorkerThreads() !==
420+
false
421+
: true,
416422
})
417423
);
418424

src/utils.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,11 @@ terserMinify.getMinimizerVersion = () => {
326326
return packageJson && packageJson.version;
327327
};
328328

329+
/**
330+
* @returns {boolean | undefined}
331+
*/
332+
terserMinify.supportsWorkerThreads = () => true;
333+
329334
/* istanbul ignore next */
330335
/**
331336
* @param {Input} input
@@ -544,6 +549,11 @@ uglifyJsMinify.getMinimizerVersion = () => {
544549
return packageJson && packageJson.version;
545550
};
546551

552+
/**
553+
* @returns {boolean | undefined}
554+
*/
555+
uglifyJsMinify.supportsWorkerThreads = () => true;
556+
547557
/* istanbul ignore next */
548558
/**
549559
* @param {Input} input
@@ -645,6 +655,11 @@ swcMinify.getMinimizerVersion = () => {
645655
return packageJson && packageJson.version;
646656
};
647657

658+
/**
659+
* @returns {boolean | undefined}
660+
*/
661+
swcMinify.supportsWorkerThreads = () => false;
662+
648663
/* istanbul ignore next */
649664
/**
650665
* @param {Input} input
@@ -755,6 +770,11 @@ esbuildMinify.getMinimizerVersion = () => {
755770
return packageJson && packageJson.version;
756771
};
757772

773+
/**
774+
* @returns {boolean | undefined}
775+
*/
776+
esbuildMinify.supportsWorkerThreads = () => false;
777+
758778
/**
759779
* @template T
760780
* @param fn {(function(): any) | undefined}

types/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ type BasicMinimizerImplementation<T> = (
192192
) => Promise<MinimizedResult>;
193193
type MinimizeFunctionHelpers = {
194194
getMinimizerVersion?: (() => string | undefined) | undefined;
195+
supportsWorkerThreads?: (() => boolean | undefined) | undefined;
195196
};
196197
type MinimizerImplementation<T> = BasicMinimizerImplementation<T> &
197198
MinimizeFunctionHelpers;

types/utils.d.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ export namespace terserMinify {
5151
* @returns {string | undefined}
5252
*/
5353
function getMinimizerVersion(): string | undefined;
54+
/**
55+
* @returns {boolean | undefined}
56+
*/
57+
function supportsWorkerThreads(): boolean | undefined;
5458
}
5559
/**
5660
* @param {Input} input
@@ -70,6 +74,10 @@ export namespace uglifyJsMinify {
7074
* @returns {string | undefined}
7175
*/
7276
function getMinimizerVersion(): string | undefined;
77+
/**
78+
* @returns {boolean | undefined}
79+
*/
80+
function supportsWorkerThreads(): boolean | undefined;
7381
}
7482
/**
7583
* @param {Input} input
@@ -87,6 +95,10 @@ export namespace swcMinify {
8795
* @returns {string | undefined}
8896
*/
8997
function getMinimizerVersion(): string | undefined;
98+
/**
99+
* @returns {boolean | undefined}
100+
*/
101+
function supportsWorkerThreads(): boolean | undefined;
90102
}
91103
/**
92104
* @param {Input} input
@@ -104,4 +116,8 @@ export namespace esbuildMinify {
104116
* @returns {string | undefined}
105117
*/
106118
function getMinimizerVersion(): string | undefined;
119+
/**
120+
* @returns {boolean | undefined}
121+
*/
122+
function supportsWorkerThreads(): boolean | undefined;
107123
}

0 commit comments

Comments
 (0)