From 38cc3b9e38d395ccd124ac5815fb8eccf04b355b Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Wed, 23 Mar 2022 19:24:55 +0000 Subject: [PATCH] Add webpack thread loader to speed up wallet build time --- nym-wallet/package.json | 1 + .../react-webpack-with-theme-example/package.json | 1 + ts-packages/webpack/webpack.common.js | 9 ++++++++- yarn.lock | 13 ++++++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/nym-wallet/package.json b/nym-wallet/package.json index 05ecd52512..1e83032807 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -92,6 +92,7 @@ "react-refresh": "^0.10.0", "react-refresh-typescript": "^2.0.2", "style-loader": "^3.2.1", + "thread-loader": "^3.0.4", "ts-jest": "^27.0.5", "ts-loader": "^9.2.5", "tsconfig-paths-webpack-plugin": "^3.5.2", diff --git a/ts-packages/react-webpack-with-theme-example/package.json b/ts-packages/react-webpack-with-theme-example/package.json index 898b5d9a8c..780f684e75 100644 --- a/ts-packages/react-webpack-with-theme-example/package.json +++ b/ts-packages/react-webpack-with-theme-example/package.json @@ -57,6 +57,7 @@ "prettier": "^2.5.1", "react-refresh-typescript": "^2.0.3", "style-loader": "^3.2.1", + "thread-loader": "^3.0.4", "ts-jest": "^27.0.5", "ts-loader": "^9.2.5", "tsconfig-paths-webpack-plugin": "^3.5.2", diff --git a/ts-packages/webpack/webpack.common.js b/ts-packages/webpack/webpack.common.js index bd37fba8ff..06231b26e9 100644 --- a/ts-packages/webpack/webpack.common.js +++ b/ts-packages/webpack/webpack.common.js @@ -5,6 +5,7 @@ const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); const WebpackFavicons = require('webpack-favicons'); const Dotenv = require('dotenv-webpack'); const path = require('path'); +const os = require('os'); /** * Creates the default Webpack config @@ -15,7 +16,13 @@ module.exports = (baseDir, htmlPath) => ({ rules: [ { test: /\.tsx?$/, - use: [{ loader: 'ts-loader', options: { transpileOnly: true } }], + use: [ + { + loader: 'thread-loader', + options: { workers: Math.max(2, os.cpus().length - 1) }, + }, + { loader: 'ts-loader', options: { happyPackMode: true } }, + ], exclude: /node_modules/, }, { diff --git a/yarn.lock b/yarn.lock index d6f0fe9fbf..9090e8c12c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12219,7 +12219,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-runner@^4.2.0: +loader-runner@^4.1.0, loader-runner@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== @@ -16906,6 +16906,17 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +thread-loader@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-3.0.4.tgz#c392e4c0241fbc80430eb680e4886819b504a31b" + integrity sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA== + dependencies: + json-parse-better-errors "^1.0.2" + loader-runner "^4.1.0" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375"