diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-04-04 18:45:18 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-04-04 18:45:18 +0530 |
| commit | 35413607c62f2de2a90941d487b7964b5c213999 (patch) | |
| tree | ce84736dce9c14b06f1adbda867aa6a357a4bbab | |
| parent | 7455c1e81dd18a898004c398a16e9f0b6f7c19ae (diff) | |
| download | banglar-bhumi-utils-35413607c62f2de2a90941d487b7964b5c213999.tar.gz banglar-bhumi-utils-35413607c62f2de2a90941d487b7964b5c213999.zip | |
Arranging shared modules in the scripts in order to make sure that the dependencies are available when shared modules references each other.
| -rw-r--r-- | config/webpack.config.js | 19 | ||||
| -rw-r--r-- | config/webpack/loader/arrange-shared-module-loader.js | 26 | ||||
| -rw-r--r-- | config/webpack/plugins/create-manifest-webpack-plugin/index.js | 6 |
3 files changed, 46 insertions, 5 deletions
diff --git a/config/webpack.config.js b/config/webpack.config.js index 98315b0..15cae74 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -153,6 +153,8 @@ const injectedBeforeScriptConfiguration = merge( } ); +const sortedSharedModules = [] + const sharedModulesConfiguration = merge( commonOptions, sharedModuleOptions, @@ -160,10 +162,23 @@ const sharedModulesConfiguration = merge( entry: sharedModuleEntries, plugins: [ new CreateManifestPlugin({ - sharedModulesImportedCount + sharedModulesImportedCount, + sortedSharedModules }), new CreateRulesPlugin() - ] + ], + module: { + rules: [ + { + test: /\.(j|t)s$/, + loader: path.resolve(CONFIG_DIR, "webpack/loader/arrange-shared-module-loader.js"), + options: { + sortedSharedModules + }, + enforce: "post" + } + ] + } } ); diff --git a/config/webpack/loader/arrange-shared-module-loader.js b/config/webpack/loader/arrange-shared-module-loader.js new file mode 100644 index 0000000..9e21b23 --- /dev/null +++ b/config/webpack/loader/arrange-shared-module-loader.js @@ -0,0 +1,26 @@ +const path = require("path"); + +const { ImportManager } = require("import-manager"); + +const sharedModules = webpackRequire("utils/shared-modules.js"); + +module.exports = function(source) { + const { sortedSharedModules } = this.getOptions(); + const manager = new ImportManager(source); + + for (const unit of manager.imports.es6.units) { + const moduleIndex = sharedModules.indexOf(unit.module.name); + + if (moduleIndex >= 0) { + const currentSharedModuleName = sharedModules[moduleIndex]; + + if (!sortedSharedModules.includes(currentSharedModuleName)) { + sortedSharedModules.push(currentSharedModuleName); + } + } + } + + sortedSharedModules.push(path.basename(this.resourcePath.substring(0, this.resourcePath.length - 3))); + + return source; +}; diff --git a/config/webpack/plugins/create-manifest-webpack-plugin/index.js b/config/webpack/plugins/create-manifest-webpack-plugin/index.js index 103fb3c..b4a29a3 100644 --- a/config/webpack/plugins/create-manifest-webpack-plugin/index.js +++ b/config/webpack/plugins/create-manifest-webpack-plugin/index.js @@ -4,12 +4,12 @@ const path = require("path"); const { getScriptRuntimeFromType } = webpackRequire("utils/script-runtime"); const { getFileNameHash } = webpackRequire("utils/filename-hash"); const scripts = webpackRequire("utils/scripts"); -const sharedModules = webpackRequire("utils/shared-modules"); const manifest = webpackRequire("plugins/create-manifest-webpack-plugin/manifest-template.json"); class CreateManifestPlugin { - constructor({ sharedModulesImportedCount }) { + constructor({ sharedModulesImportedCount, sortedSharedModules }) { this.sharedModulesImportedCount = sharedModulesImportedCount; + this.sortedSharedModules = sortedSharedModules; } apply(compiler) { @@ -26,7 +26,7 @@ class CreateManifestPlugin { manifest.content_scripts.push({ matches: [`*://banglarbhumi.gov.in/BanglarBhumi/*`], - js: sharedModules + js: this.sortedSharedModules .filter(sharedModule => this.sharedModulesImportedCount[sharedModule] > 0) .map(sharedModule => `shared/${getFileNameHash(sharedModule, "shared")}.js`), run_at: "document_start" |
