aboutsummaryrefslogtreecommitdiffstats
path: root/config/webpack.config.js
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2025-06-13 20:11:35 +0000
committerGitHub <noreply@github.com>2025-06-13 20:11:35 +0000
commitca20de409d08ec5abe2d3275bb97cfc5e8c164b3 (patch)
treea13b48386e20bf69e7ede0bfff4715c17b90549d /config/webpack.config.js
parentcaa9c3f705730886cab911cb241703a10494581c (diff)
parent54467df36805eabf9113d1bb84d7434b331cd167 (diff)
downloadbanglar-bhumi-utils-ca20de409d08ec5abe2d3275bb97cfc5e8c164b3.tar.gz
banglar-bhumi-utils-ca20de409d08ec5abe2d3275bb97cfc5e8c164b3.zip
Merge pull request #2 from arpitchakladar/dev/porting-to-firefox
Dev/implementing OCR for captcha autofill
Diffstat (limited to 'config/webpack.config.js')
-rw-r--r--config/webpack.config.js94
1 files changed, 60 insertions, 34 deletions
diff --git a/config/webpack.config.js b/config/webpack.config.js
index 70b87ca..8fd3f15 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -1,27 +1,29 @@
-const path = require("path");
-const fs = require("fs");
-const webpack = require("webpack");
-const { merge } = require("webpack-merge");
-const CopyPlugin = require("copy-webpack-plugin");
+import path from "path";
+import fs from "fs";
+import { fileURLToPath } from "url";
+import webpack from "webpack";
+import { merge } from "webpack-merge";
+import CopyPlugin from "copy-webpack-plugin";
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
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));
-
-const CreateManifestPlugin = webpackRequire("plugins/create-manifest-webpack-plugin");
-const CreateRulesPlugin = webpackRequire("plugins/create-rules-webpack-plugin");
-const InjectScriptPlugin = webpackRequire("plugins/inject-script-webpack-plugin");
-const CreateInjectedSharedModulesPlugin = webpackRequire("plugins/create-injected-shared-modules-webpack-plugin");
+import CreateManifestPlugin from "./webpack/plugins/create-manifest-webpack-plugin/index.js";
+import CreateRulesPlugin from "./webpack/plugins/create-rules-webpack-plugin.js";
+import InjectScriptPlugin from "./webpack/plugins/inject-script-webpack-plugin.js";
+import CreateInjectedSharedModulesPlugin from "./webpack/plugins/create-injected-shared-modules-webpack-plugin.js";
-const { inlineJavascript } = webpackRequire("utils/inline-javascript");
-const { getScriptRuntimeFromType } = webpackRequire("utils/script-runtime");
-const { getFileName } = webpackRequire("utils/build-file");
+import { inlineJavascript } from "./webpack/utils/inline-javascript.js";
+import { getScriptRuntimeFromType } from "./webpack/utils/script-runtime.js";
+import { getFileName } from "./webpack/utils/build-file.js";
-const scripts = webpackRequire("utils/scripts");
-const sharedModules = webpackRequire("utils/shared-modules");
+import scripts from "./webpack/utils/scripts.js";
+import sharedModules from "./webpack/utils/shared-modules.js";
const sharedModulesImportedCount = {};
@@ -35,12 +37,21 @@ for (const sharedModule of sharedModules) {
injectedSharedModulesImportedCount[sharedModule] = 0;
}
+const backgroundScriptEntries = {};
const uninjectedScriptEntries = {};
const injectedAfterScriptEntries = {};
const injectedBeforeScriptEntries = {};
const sharedModuleEntries = {};
const sharedModuleExternals = {};
+const backgroundScriptImports = fs.readdirSync(path.resolve(SOURCE_DIR, "background"))
+ .map(scriptName => `import "${path.resolve(SOURCE_DIR, "background", scriptName)}";`)
+ .join("\n");
+backgroundScriptEntries["background script"] = {
+ import: inlineJavascript(backgroundScriptImports),
+ filename: "background.js"
+};
+
for (const scriptPath in scripts) {
for (const scriptType in scripts[scriptPath]) {
const currentScripts = scripts[scriptPath][scriptType];
@@ -84,8 +95,8 @@ const commonOptions = {
resolve: {
extensions: [".ts", ".js", ".html"],
alias: {
- "@": global.SOURCE_DIR
- }
+ "@": global.SOURCE_DIR,
+ },
},
module: {
rules: [
@@ -93,27 +104,27 @@ const commonOptions = {
test: /\.ts$/,
loader: "ts-loader",
options: {
- configFile: "config/tsconfig.json"
+ configFile: "config/tsconfig.json",
}
},
{
test: /\.html$/,
- loader: path.resolve(CONFIG_DIR, "webpack/loader/to-string-loader.js")
- }
- ]
+ loader: path.resolve(CONFIG_DIR, "webpack/loader/to-string-loader.js"),
+ },
+ ],
},
optimization: {
minimize: process.env.NODE_ENV === "production",
- runtimeChunk: false
+ runtimeChunk: false,
},
output: {
- iife: true
+ iife: true,
},
plugins: [
new webpack.optimize.LimitChunkCountPlugin({
- maxChunks: 1
- })
- ]
+ maxChunks: 1,
+ }),
+ ],
};
const sharedModuleOptions = {
@@ -125,14 +136,22 @@ const sharedModuleOptions = {
test: /banglar-bhumi-utils\/src\/.*.(^.?|\.[^d]|[^.]d|[^.][^d])\.(t|j)s$/,
loader: path.resolve(CONFIG_DIR, "webpack/loader/count-imports-loader.js"),
options: {
- sharedModulesImportedCount
+ sharedModulesImportedCount,
},
- enforce: "post"
+ enforce: "post",
}
]
}
};
+const backgroundScriptConfiguration = merge(
+ commonOptions,
+ sharedModuleOptions,
+ {
+ entry: backgroundScriptEntries,
+ },
+);
+
const uninjectedScriptConfiguration = merge(
commonOptions,
sharedModuleOptions,
@@ -174,10 +193,16 @@ const sharedModulesConfiguration = merge(
entry: sharedModuleEntries,
plugins: [
new CopyPlugin({
- patterns: [{
- from: path.resolve(ROOT_DIR, "static"),
- to: "./"
- }]
+ patterns: [
+ {
+ from: path.resolve("static"),
+ to: "./",
+ },
+ {
+ from: path.resolve("src/offscreen"),
+ to: "./offscreen",
+ },
+ ],
}),
new CreateInjectedSharedModulesPlugin({
injectedSharedModulesImportedCount,
@@ -205,7 +230,8 @@ const sharedModulesConfiguration = merge(
}
);
-module.exports = [
+export default [
+ backgroundScriptConfiguration,
uninjectedScriptConfiguration,
injectedScriptConfiguration,
sharedModulesConfiguration