From 7455c1e81dd18a898004c398a16e9f0b6f7c19ae Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:05:48 +0530 Subject: Keeping track of the number of times that a shared module has been used and dertermining if it is to be included along with the other scripts. --- config/webpack.config.js | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'config/webpack.config.js') diff --git a/config/webpack.config.js b/config/webpack.config.js index 22544b9..98315b0 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -22,6 +22,12 @@ const scripts = webpackRequire("utils/scripts"); const sharedModules = webpackRequire("utils/shared-modules"); +const sharedModulesImportedCount = {}; + +for (const sharedModule of sharedModules) { + sharedModulesImportedCount[sharedModule] = 0; +} + const uninjectedScriptEntries = {}; const injectedAfterScriptEntries = {}; const injectedBeforeScriptEntries = {}; @@ -94,20 +100,25 @@ const commonOptions = { } }; -const ecmaScriptModuleOptions = { - experiments: { - outputModule: true - } -}; - const sharedModuleOptions = { externals: sharedModuleExternals, - externalsType: "var" + externalsType: "var", + module: { + rules: [ + { + test: /\.(j|t)s$/, + loader: path.resolve(CONFIG_DIR, "webpack/loader/count-imports-loader.js"), + options: { + sharedModulesImportedCount + }, + enforce: "post" + } + ] + }, }; const uninjectedScriptConfiguration = merge( commonOptions, - ecmaScriptModuleOptions, sharedModuleOptions, { entry: uninjectedScriptEntries, @@ -144,12 +155,13 @@ const injectedBeforeScriptConfiguration = merge( const sharedModulesConfiguration = merge( commonOptions, - ecmaScriptModuleOptions, sharedModuleOptions, { entry: sharedModuleEntries, plugins: [ - new CreateManifestPlugin(), + new CreateManifestPlugin({ + sharedModulesImportedCount + }), new CreateRulesPlugin() ] } -- cgit v1.2.3