aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/webpack.config.js19
-rw-r--r--config/webpack/loader/arrange-shared-module-loader.js26
-rw-r--r--config/webpack/plugins/create-manifest-webpack-plugin/index.js6
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"