@rushstack/webpack4-module-minifier-plugin 0.13.84 → 0.13.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.json CHANGED
@@ -1,6 +1,29 @@
1
1
  {
2
2
  "name": "@rushstack/webpack4-module-minifier-plugin",
3
3
  "entries": [
4
+ {
5
+ "version": "0.13.85",
6
+ "tag": "@rushstack/webpack4-module-minifier-plugin_v0.13.85",
7
+ "date": "Thu, 30 Jan 2025 16:10:36 GMT",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "comment": "Prefer `os.availableParallelism()` to `os.cpus().length`."
12
+ }
13
+ ],
14
+ "dependency": [
15
+ {
16
+ "comment": "Updating dependency \"@rushstack/module-minifier\" to `0.7.2`"
17
+ },
18
+ {
19
+ "comment": "Updating dependency \"@rushstack/worker-pool\" to `0.5.2`"
20
+ },
21
+ {
22
+ "comment": "Updating dependency \"@rushstack/heft\" to `0.68.15`"
23
+ }
24
+ ]
25
+ }
26
+ },
4
27
  {
5
28
  "version": "0.13.84",
6
29
  "tag": "@rushstack/webpack4-module-minifier-plugin_v0.13.84",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @rushstack/webpack4-module-minifier-plugin
2
2
 
3
- This log was last generated on Thu, 30 Jan 2025 01:11:42 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 30 Jan 2025 16:10:36 GMT and should not be manually modified.
4
+
5
+ ## 0.13.85
6
+ Thu, 30 Jan 2025 16:10:36 GMT
7
+
8
+ ### Patches
9
+
10
+ - Prefer `os.availableParallelism()` to `os.cpus().length`.
4
11
 
5
12
  ## 0.13.84
6
13
  Thu, 30 Jan 2025 01:11:42 GMT
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.49.1"
8
+ "packageVersion": "7.49.2"
9
9
  }
10
10
  ]
11
11
  }
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
3
3
  // See LICENSE in the project root for license information.
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
4
7
  Object.defineProperty(exports, "__esModule", { value: true });
5
8
  exports.runParallel = void 0;
6
- const os_1 = require("os");
9
+ const os_1 = __importDefault(require("os"));
7
10
  const path_1 = require("path");
8
11
  const module_minifier_1 = require("@rushstack/module-minifier");
9
12
  const worker_pool_1 = require("@rushstack/worker-pool");
@@ -34,11 +37,12 @@ function formatTime(timeNs) {
34
37
  return `${timeNs}.${('000' + fraction).slice(-3, -1)} ${unit}`;
35
38
  }
36
39
  async function runParallel(options) {
40
+ var _a, _b;
37
41
  const resolvedPath = (0, path_1.resolve)(options.configFilePath);
38
42
  const rawConfig = require(resolvedPath); // eslint-disable-line @typescript-eslint/no-var-requires
39
43
  const configArray = Array.isArray(rawConfig) ? rawConfig : [rawConfig];
40
44
  const configCount = configArray.length;
41
- const totalCpus = (0, os_1.cpus)().length;
45
+ const totalCpus = (_b = (_a = os_1.default.availableParallelism) === null || _a === void 0 ? void 0 : _a.call(os_1.default)) !== null && _b !== void 0 ? _b : os_1.default.cpus().length;
42
46
  // TODO: Use all cores if not minifying
43
47
  const { maxCompilationThreads: maxConfiguredCompilationThreads = Math.max(totalCpus > 8 ? (totalCpus * 3) >> 2 : totalCpus >> 1, 1), sourceMap, usePortableModules } = options;
44
48
  const maxCompilationThreads = Math.min(configCount, maxConfiguredCompilationThreads);
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelCompiler.js","sourceRoot":"","sources":["../src/ParallelCompiler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { cpus } from 'os';\nimport { resolve } from 'path';\nimport type { Worker } from 'worker_threads';\n\nimport type { Configuration } from 'webpack';\n\nimport type {\n IMinifierConnection,\n IModuleMinificationRequest,\n IModuleMinificationResult,\n MinifyOptions\n} from '@rushstack/module-minifier';\nimport { WorkerPoolMinifier } from '@rushstack/module-minifier';\nimport { WorkerPool } from '@rushstack/worker-pool';\n\nexport interface IParallelWebpackOptions {\n cacheDirectory?: string;\n configFilePath: string;\n maxCompilationThreads?: number;\n sourceMap?: boolean | undefined;\n terserOptions?: MinifyOptions;\n usePortableModules?: boolean;\n}\n\nconst ZERO: bigint = BigInt(0);\nconst THOUSAND: bigint = BigInt(1e3);\n\n/**\n * Formats a delta of `process.hrtime.bigint()` values as a string\n * @param timeNs\n */\nfunction formatTime(timeNs: bigint): string {\n let unit: string = 'ns';\n let fraction: bigint = ZERO;\n if (timeNs > THOUSAND) {\n unit = 'us';\n fraction = timeNs % THOUSAND;\n timeNs /= THOUSAND;\n }\n if (timeNs > THOUSAND) {\n unit = 'ms';\n fraction = timeNs % THOUSAND;\n timeNs /= THOUSAND;\n }\n if (timeNs > THOUSAND) {\n unit = 's';\n fraction = timeNs % THOUSAND;\n timeNs /= THOUSAND;\n }\n\n return `${timeNs}.${('000' + fraction).slice(-3, -1)} ${unit}`;\n}\n\nexport async function runParallel(options: IParallelWebpackOptions): Promise<void> {\n const resolvedPath: string = resolve(options.configFilePath);\n\n const rawConfig: Configuration | Configuration[] = require(resolvedPath); // eslint-disable-line @typescript-eslint/no-var-requires\n const configArray: Configuration[] = Array.isArray(rawConfig) ? rawConfig : [rawConfig];\n const configCount: number = configArray.length;\n\n const totalCpus: number = cpus().length;\n\n // TODO: Use all cores if not minifying\n const {\n maxCompilationThreads: maxConfiguredCompilationThreads = Math.max(\n totalCpus > 8 ? (totalCpus * 3) >> 2 : totalCpus >> 1,\n 1\n ),\n sourceMap,\n usePortableModules\n } = options;\n\n const maxCompilationThreads: number = Math.min(configCount, maxConfiguredCompilationThreads);\n\n const maxCompressionThreads: number = Math.max(1, totalCpus - maxCompilationThreads);\n\n const minifier: WorkerPoolMinifier = new WorkerPoolMinifier({\n terserOptions: options.terserOptions,\n maxThreads: maxCompressionThreads\n });\n\n const minifierConnection: IMinifierConnection = await minifier.connectAsync();\n\n const webpackPool: WorkerPool = new WorkerPool({\n id: 'Webpack',\n maxWorkers: maxCompilationThreads,\n onWorkerDestroyed: (): void => {\n // Allocate the webpack worker to terser\n minifier.maxThreads++;\n },\n workerScriptPath: require.resolve('./workerPool/WebpackWorker'),\n workerData: {\n configFilePath: resolvedPath,\n sourceMap,\n usePortableModules\n }\n });\n\n let processed: number = 0;\n const startTime: bigint = process.hrtime.bigint();\n\n for (let i: number = 0; i < configCount; i++) {\n const webpackWorker: Worker = await webpackPool.checkoutWorkerAsync(true);\n\n const sendMinifierResult: (result: IModuleMinificationResult) => void = (\n result: IModuleMinificationResult\n ): void => {\n webpackWorker.postMessage(result);\n };\n\n const workerOnMessage: (message: IModuleMinificationRequest | number) => void = (\n message: IModuleMinificationRequest | string | number\n ): void => {\n if (message === 'getConfigHash') {\n webpackWorker.postMessage(minifierConnection.configHash);\n return;\n }\n\n if (typeof message === 'object') {\n return minifier.minify(message, sendMinifierResult);\n }\n\n ++processed;\n // eslint-disable-next-line no-console\n console.log(\n `${processed}/${configCount} complete (${formatTime(process.hrtime.bigint() - startTime)})`\n );\n\n webpackWorker.off('message', workerOnMessage);\n webpackPool.checkinWorker(webpackWorker);\n };\n\n webpackWorker.on('message', workerOnMessage);\n webpackWorker.postMessage(i);\n }\n\n await webpackPool.finishAsync();\n\n await minifierConnection.disconnectAsync();\n}\n"]}
1
+ {"version":3,"file":"ParallelCompiler.js","sourceRoot":"","sources":["../src/ParallelCompiler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport os from 'os';\nimport { resolve } from 'path';\nimport type { Worker } from 'worker_threads';\n\nimport type { Configuration } from 'webpack';\n\nimport type {\n IMinifierConnection,\n IModuleMinificationRequest,\n IModuleMinificationResult,\n MinifyOptions\n} from '@rushstack/module-minifier';\nimport { WorkerPoolMinifier } from '@rushstack/module-minifier';\nimport { WorkerPool } from '@rushstack/worker-pool';\n\nexport interface IParallelWebpackOptions {\n cacheDirectory?: string;\n configFilePath: string;\n maxCompilationThreads?: number;\n sourceMap?: boolean | undefined;\n terserOptions?: MinifyOptions;\n usePortableModules?: boolean;\n}\n\nconst ZERO: bigint = BigInt(0);\nconst THOUSAND: bigint = BigInt(1e3);\n\n/**\n * Formats a delta of `process.hrtime.bigint()` values as a string\n * @param timeNs\n */\nfunction formatTime(timeNs: bigint): string {\n let unit: string = 'ns';\n let fraction: bigint = ZERO;\n if (timeNs > THOUSAND) {\n unit = 'us';\n fraction = timeNs % THOUSAND;\n timeNs /= THOUSAND;\n }\n if (timeNs > THOUSAND) {\n unit = 'ms';\n fraction = timeNs % THOUSAND;\n timeNs /= THOUSAND;\n }\n if (timeNs > THOUSAND) {\n unit = 's';\n fraction = timeNs % THOUSAND;\n timeNs /= THOUSAND;\n }\n\n return `${timeNs}.${('000' + fraction).slice(-3, -1)} ${unit}`;\n}\n\nexport async function runParallel(options: IParallelWebpackOptions): Promise<void> {\n const resolvedPath: string = resolve(options.configFilePath);\n\n const rawConfig: Configuration | Configuration[] = require(resolvedPath); // eslint-disable-line @typescript-eslint/no-var-requires\n const configArray: Configuration[] = Array.isArray(rawConfig) ? rawConfig : [rawConfig];\n const configCount: number = configArray.length;\n\n const totalCpus: number = os.availableParallelism?.() ?? os.cpus().length;\n\n // TODO: Use all cores if not minifying\n const {\n maxCompilationThreads: maxConfiguredCompilationThreads = Math.max(\n totalCpus > 8 ? (totalCpus * 3) >> 2 : totalCpus >> 1,\n 1\n ),\n sourceMap,\n usePortableModules\n } = options;\n\n const maxCompilationThreads: number = Math.min(configCount, maxConfiguredCompilationThreads);\n\n const maxCompressionThreads: number = Math.max(1, totalCpus - maxCompilationThreads);\n\n const minifier: WorkerPoolMinifier = new WorkerPoolMinifier({\n terserOptions: options.terserOptions,\n maxThreads: maxCompressionThreads\n });\n\n const minifierConnection: IMinifierConnection = await minifier.connectAsync();\n\n const webpackPool: WorkerPool = new WorkerPool({\n id: 'Webpack',\n maxWorkers: maxCompilationThreads,\n onWorkerDestroyed: (): void => {\n // Allocate the webpack worker to terser\n minifier.maxThreads++;\n },\n workerScriptPath: require.resolve('./workerPool/WebpackWorker'),\n workerData: {\n configFilePath: resolvedPath,\n sourceMap,\n usePortableModules\n }\n });\n\n let processed: number = 0;\n const startTime: bigint = process.hrtime.bigint();\n\n for (let i: number = 0; i < configCount; i++) {\n const webpackWorker: Worker = await webpackPool.checkoutWorkerAsync(true);\n\n const sendMinifierResult: (result: IModuleMinificationResult) => void = (\n result: IModuleMinificationResult\n ): void => {\n webpackWorker.postMessage(result);\n };\n\n const workerOnMessage: (message: IModuleMinificationRequest | number) => void = (\n message: IModuleMinificationRequest | string | number\n ): void => {\n if (message === 'getConfigHash') {\n webpackWorker.postMessage(minifierConnection.configHash);\n return;\n }\n\n if (typeof message === 'object') {\n return minifier.minify(message, sendMinifierResult);\n }\n\n ++processed;\n // eslint-disable-next-line no-console\n console.log(\n `${processed}/${configCount} complete (${formatTime(process.hrtime.bigint() - startTime)})`\n );\n\n webpackWorker.off('message', workerOnMessage);\n webpackPool.checkinWorker(webpackWorker);\n };\n\n webpackWorker.on('message', workerOnMessage);\n webpackWorker.postMessage(i);\n }\n\n await webpackPool.finishAsync();\n\n await minifierConnection.disconnectAsync();\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/webpack4-module-minifier-plugin",
3
- "version": "0.13.84",
3
+ "version": "0.13.85",
4
4
  "description": "This plugin splits minification of webpack compilations into smaller units.",
5
5
  "main": "lib/index.js",
6
6
  "typings": "dist/webpack4-module-minifier-plugin.d.ts",
@@ -34,8 +34,8 @@
34
34
  "dependencies": {
35
35
  "@types/tapable": "1.0.6",
36
36
  "tapable": "1.1.3",
37
- "@rushstack/module-minifier": "0.7.1",
38
- "@rushstack/worker-pool": "0.5.1"
37
+ "@rushstack/worker-pool": "0.5.2",
38
+ "@rushstack/module-minifier": "0.7.2"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/webpack": "4.41.32",
@@ -43,7 +43,7 @@
43
43
  "webpack": "~4.47.0",
44
44
  "webpack-sources": "~1.4.3",
45
45
  "local-node-rig": "1.0.0",
46
- "@rushstack/heft": "0.68.14"
46
+ "@rushstack/heft": "0.68.15"
47
47
  },
48
48
  "sideEffects": [
49
49
  "./lib/OverrideWebpackIdentifierAllocation"