diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2025-06-13 20:11:35 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-13 20:11:35 +0000 |
| commit | ca20de409d08ec5abe2d3275bb97cfc5e8c164b3 (patch) | |
| tree | a13b48386e20bf69e7ede0bfff4715c17b90549d /config/webpack.config.js | |
| parent | caa9c3f705730886cab911cb241703a10494581c (diff) | |
| parent | 54467df36805eabf9113d1bb84d7434b331cd167 (diff) | |
| download | banglar-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.js | 94 |
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 |
