aboutsummaryrefslogtreecommitdiffstats
path: root/config/webpack.config.js
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-03-27 21:38:43 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-03-27 21:38:43 +0530
commitd178caee5c93ad9ed91dbd082b0f0b5a9b0507aa (patch)
treeccfdf4c6992a86955c80780de0518a2fea10ac39 /config/webpack.config.js
parent5955bd821303cffa35263c41286339fb28e7536b (diff)
downloadbanglar-bhumi-utils-d178caee5c93ad9ed91dbd082b0f0b5a9b0507aa.tar.gz
banglar-bhumi-utils-d178caee5c93ad9ed91dbd082b0f0b5a9b0507aa.zip
Refactoring code.
Only using hashes for output file names. Using singleton pattern to store the callbacks for observeDOM, and only one MutationObserver.
Diffstat (limited to 'config/webpack.config.js')
-rw-r--r--config/webpack.config.js41
1 files changed, 34 insertions, 7 deletions
diff --git a/config/webpack.config.js b/config/webpack.config.js
index 206eea1..010a51f 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -6,6 +6,7 @@ const CopyPlugin = require("copy-webpack-plugin");
global.ROOT_DIR = path.resolve(__dirname, "..");
global.CONFIG_DIR = path.resolve(ROOT_DIR, "config");
global.SOURCE_DIR = path.resolve(ROOT_DIR, "src");
+global.production = process.env.NODE_ENV === "production";
global.webpackRequire = modulePath => require(path.resolve(CONFIG_DIR, "webpack", modulePath));
@@ -21,24 +22,38 @@ const scripts = webpackRequire("utils/scripts");
const sharedModules = webpackRequire("utils/shared-modules");
const uninjectedScriptEntries = {};
-const injectedScriptEntries = {};
+const injectedAfterScriptEntries = {};
+const injectedBeforeScriptEntries = {};
const sharedModuleEntries = {};
const sharedModuleExternals = {};
for (const scriptPath in scripts) {
for (const scriptType in scripts[scriptPath]) {
const currentScripts = scripts[scriptPath][scriptType];
- const scriptEntries = scriptType.startsWith("injected") ? injectedScriptEntries : uninjectedScriptEntries;
+ let scriptEntries;
+
+ switch (scriptType) {
+ case "injected":
+ scriptEntries = injectedAfterScriptEntries;
+ break;
+
+ case "injected-before":
+ scriptEntries = injectedBeforeScriptEntries;
+ break;
+
+ default:
+ scriptEntries = uninjectedScriptEntries;
+ }
scriptEntries[`${scriptType} - "${scriptPath}"`] = {
import: inlineJavascript(currentScripts.map(script => `import "${path.resolve(SOURCE_DIR, "scripts", script)}";`).join("\n")),
- filename: `scripts/${getFileNameHash(scriptPath)}-${scriptType}.js`
+ filename: `scripts/${getFileNameHash(scriptType, scriptPath)}.js`
};
}
}
for (const sharedModule of sharedModules) {
- const sharedModuleNameHash = getFileNameHash(sharedModule);
+ const sharedModuleNameHash = getFileNameHash(sharedModule, "shared");
sharedModuleEntries[sharedModule] = {
import: path.resolve(SOURCE_DIR, "shared", sharedModule),
filename: `shared/${sharedModuleNameHash}.js`
@@ -110,17 +125,28 @@ const uninjectedScriptConfiguration = merge(
}
);
-const injectedScriptConfiguration = merge(
+const injectedAfterScriptConfiguration = merge(
commonOptions,
scriptOptions,
{
- entry: injectedScriptEntries,
+ entry: injectedAfterScriptEntries,
plugins: [
new InjectScriptPlugin()
]
}
);
+const injectedBeforeScriptConfiguration = merge(
+ commonOptions,
+ scriptOptions,
+ {
+ entry: injectedBeforeScriptEntries,
+ plugins: [
+ new InjectScriptPlugin(true)
+ ]
+ }
+);
+
const sharedModulesConfiguration = merge(
commonOptions,
ecmaScriptModuleOptions,
@@ -137,6 +163,7 @@ const sharedModulesConfiguration = merge(
module.exports = [
uninjectedScriptConfiguration,
- injectedScriptConfiguration,
+ injectedAfterScriptConfiguration,
+ injectedBeforeScriptConfiguration,
sharedModulesConfiguration
];