From 7164ef595147d997068b953d0e8bd19add0db5f9 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Fri, 13 Jun 2025 23:28:57 +0530 Subject: Using es-modules for webpack configuration. --- .../webpack/loader/arrange-shared-module-loader.js | 9 ++++---- config/webpack/loader/count-imports-loader.js | 7 +++--- config/webpack/loader/to-string-loader.js | 2 +- ...reate-injected-shared-modules-webpack-plugin.js | 12 +++++------ .../create-manifest-webpack-plugin/index.js | 25 +++++++++++++--------- .../webpack/plugins/create-rules-webpack-plugin.js | 12 +++++------ .../plugins/inject-script-webpack-plugin.js | 14 ++++++------ config/webpack/utils/build-file.js | 4 ++-- config/webpack/utils/injected-code.js | 4 ++-- config/webpack/utils/inline-javascript.js | 2 +- config/webpack/utils/script-runtime.js | 2 +- config/webpack/utils/scripts.js | 12 ++++++++--- config/webpack/utils/shared-modules.js | 6 +++--- 13 files changed, 60 insertions(+), 51 deletions(-) (limited to 'config/webpack') diff --git a/config/webpack/loader/arrange-shared-module-loader.js b/config/webpack/loader/arrange-shared-module-loader.js index 1669a64..2265185 100644 --- a/config/webpack/loader/arrange-shared-module-loader.js +++ b/config/webpack/loader/arrange-shared-module-loader.js @@ -1,10 +1,9 @@ -const path = require("path"); +import path from "path"; +import { ImportManager } from "import-manager"; -const { ImportManager } = require("import-manager"); +import sharedModules from "../utils/shared-modules.js"; -const sharedModules = webpackRequire("utils/shared-modules.js"); - -module.exports = function(source) { +export default function(source) { const currentSharedModuleName = path.basename(this.resourcePath.substring(0, this.resourcePath.length - 3)); if (sharedModules.includes(currentSharedModuleName)) { diff --git a/config/webpack/loader/count-imports-loader.js b/config/webpack/loader/count-imports-loader.js index 4c3faa4..2586332 100644 --- a/config/webpack/loader/count-imports-loader.js +++ b/config/webpack/loader/count-imports-loader.js @@ -1,8 +1,7 @@ -const { ImportManager } = require("import-manager"); +import { ImportManager } from "import-manager"; +import sharedModules from "../utils/shared-modules.js"; -const sharedModules = webpackRequire("utils/shared-modules.js"); - -module.exports = function(source) { +export default function(source) { const { sharedModulesImportedCount } = this.getOptions(); const manager = new ImportManager(source); diff --git a/config/webpack/loader/to-string-loader.js b/config/webpack/loader/to-string-loader.js index cf26b28..248574a 100644 --- a/config/webpack/loader/to-string-loader.js +++ b/config/webpack/loader/to-string-loader.js @@ -1,4 +1,4 @@ -module.exports = function(source) { +export default function(source) { source = source .replaceAll("\\", "\\\\") .replaceAll("`","\\`") diff --git a/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js b/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js index aa076b8..695d4ef 100644 --- a/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js +++ b/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js @@ -1,8 +1,8 @@ -const path = require("path"); -const fs = require("fs"); -const { sources } = require("webpack"); +import path from "path"; +import fs from "fs"; +import webpack from "webpack"; -const { getFileName } = webpackRequire("utils/build-file"); +import { getFileName } from "../utils/build-file.js"; class CreateInjectedSharedModulesPlugin { constructor({ injectedSharedModulesImportedCount, sortedSharedModules }) { @@ -29,7 +29,7 @@ class CreateInjectedSharedModulesPlugin { .join(""); compilation.emitAsset( `shared/${getFileName("injected-shared-modules", "shared")}.js`, - new sources.RawSource(injectionCode) + new webpack.sources.RawSource(injectionCode) ); } } @@ -38,4 +38,4 @@ class CreateInjectedSharedModulesPlugin { } } -module.exports = CreateInjectedSharedModulesPlugin; +export default CreateInjectedSharedModulesPlugin; diff --git a/config/webpack/plugins/create-manifest-webpack-plugin/index.js b/config/webpack/plugins/create-manifest-webpack-plugin/index.js index 330c22f..2c9ab8e 100644 --- a/config/webpack/plugins/create-manifest-webpack-plugin/index.js +++ b/config/webpack/plugins/create-manifest-webpack-plugin/index.js @@ -1,10 +1,15 @@ -const { sources } = require("webpack"); -const path = require("path"); - -const { getScriptRuntimeFromType } = webpackRequire("utils/script-runtime"); -const { getFileName } = webpackRequire("utils/build-file"); -const scripts = webpackRequire("utils/scripts"); -const manifest = webpackRequire("plugins/create-manifest-webpack-plugin/manifest-template.json"); +import webpack from "webpack"; +import path from "path"; +import fs from "fs"; + +import { getScriptRuntimeFromType } from "../../utils/script-runtime.js"; +import { getFileName } from "../../utils/build-file.js"; +import scripts from "../../utils/scripts.js"; +const manifest = JSON.parse( + fs.readFileSync( + path.resolve("config/webpack/plugins/create-manifest-webpack-plugin/manifest-template.json"), + ), +); class CreateManifestPlugin { constructor({ sharedModulesImportedCount, injectedSharedModulesImportedCount, sortedSharedModules }) { @@ -21,7 +26,7 @@ class CreateManifestPlugin { stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL }, assets => { - manifest.version = require(path.resolve(ROOT_DIR, "package.json")).version; + manifest.version = JSON.parse(fs.readFileSync((path.resolve(ROOT_DIR, "package.json")))).version; manifest.content_scripts = []; let resources = []; @@ -101,7 +106,7 @@ class CreateManifestPlugin { compilation.emitAsset( "manifest.json", - new sources.RawSource( + new webpack.sources.RawSource( JSON.stringify( manifest, undefined, @@ -117,4 +122,4 @@ class CreateManifestPlugin { } } -module.exports = CreateManifestPlugin; +export default CreateManifestPlugin; diff --git a/config/webpack/plugins/create-rules-webpack-plugin.js b/config/webpack/plugins/create-rules-webpack-plugin.js index 6e31196..5573ddf 100644 --- a/config/webpack/plugins/create-rules-webpack-plugin.js +++ b/config/webpack/plugins/create-rules-webpack-plugin.js @@ -1,6 +1,6 @@ -const path = require("path"); -const fs = require("fs"); -const { sources } = require("webpack"); +import path from "path"; +import fs from "fs"; +import webpack from "webpack"; class CreateRulesPlugin { apply(compiler) { @@ -16,7 +16,7 @@ class CreateRulesPlugin { let ruleId = 1; for (const ruleFileName of ruleFileNames) { - const rule = require(path.resolve(SOURCE_DIR, "rules", ruleFileName)); + const rule = JSON.parse(fs.readFileSync(path.resolve("src/rules", ruleFileName))); if (rule instanceof Array) { for (const currentRule of rule) { @@ -31,7 +31,7 @@ class CreateRulesPlugin { compilation.emitAsset( "rules.json", - new sources.RawSource( + new webpack.sources.RawSource( JSON.stringify( rules, undefined, @@ -47,4 +47,4 @@ class CreateRulesPlugin { } } -module.exports = CreateRulesPlugin; +export default CreateRulesPlugin; diff --git a/config/webpack/plugins/inject-script-webpack-plugin.js b/config/webpack/plugins/inject-script-webpack-plugin.js index 25b1dc6..2b60022 100644 --- a/config/webpack/plugins/inject-script-webpack-plugin.js +++ b/config/webpack/plugins/inject-script-webpack-plugin.js @@ -1,8 +1,8 @@ -const { sources } = require("webpack"); -const path = require("path"); +import webpack from "webpack"; +import path from "path"; -const { getFileName } = webpackRequire("utils/build-file"); -const { getInjectedCode } = webpackRequire("utils/injected-code"); +import { getFileName } from "../utils/build-file.js"; +import { getInjectedCode } from "../utils/injected-code.js"; class InjectScriptPlugin { apply(compiler) { @@ -20,9 +20,9 @@ class InjectScriptPlugin { const scriptInjectorModuleName = getFileName("script-injector", "shared", true); compilation.updateAsset( assetName, - new sources.RawSource(injectedCodeResponse[0]) + new webpack.sources.RawSource(injectedCodeResponse[0]) ); - assets["scripts/" + path.basename(assetName)] = new sources.RawSource( + assets["scripts/" + path.basename(assetName)] = new webpack.sources.RawSource( `$${scriptInjectorModuleName}.injectScriptHead("scripts/injected/${path.basename(assetName)}", ${injectedCodeResponse[1]});` ); } @@ -33,4 +33,4 @@ class InjectScriptPlugin { } } -module.exports = InjectScriptPlugin; +export default InjectScriptPlugin; diff --git a/config/webpack/utils/build-file.js b/config/webpack/utils/build-file.js index 2ab8d86..6945911 100644 --- a/config/webpack/utils/build-file.js +++ b/config/webpack/utils/build-file.js @@ -1,6 +1,6 @@ -const crypto = require("crypto"); +import crypto from "crypto"; -module.exports.getFileName = (fileName, prefix, justHash = false) => { +export const getFileName = (fileName, prefix, justHash = false) => { let hash = crypto .createHash("md5") .update(`${prefix}-${fileName}`) diff --git a/config/webpack/utils/injected-code.js b/config/webpack/utils/injected-code.js index a4f88ac..a2884f6 100644 --- a/config/webpack/utils/injected-code.js +++ b/config/webpack/utils/injected-code.js @@ -1,4 +1,4 @@ -const crypto = require("crypto"); +import crypto from "crypto"; const getHash = url => crypto @@ -7,7 +7,7 @@ const getHash = url => .digest("hex") .substring(16); -module.exports.getInjectedCode = code => { +export const getInjectedCode = code => { const extensionAssets = {}; let i = 0; diff --git a/config/webpack/utils/inline-javascript.js b/config/webpack/utils/inline-javascript.js index ea344a4..456dc11 100644 --- a/config/webpack/utils/inline-javascript.js +++ b/config/webpack/utils/inline-javascript.js @@ -1 +1 @@ -module.exports.inlineJavascript = code => `data:text/javascript;base64,${Buffer.from(code).toString("base64")}`; +export const inlineJavascript = code => `data:text/javascript;base64,${Buffer.from(code).toString("base64")}`; diff --git a/config/webpack/utils/script-runtime.js b/config/webpack/utils/script-runtime.js index a89d4b8..a7c02f7 100644 --- a/config/webpack/utils/script-runtime.js +++ b/config/webpack/utils/script-runtime.js @@ -1,4 +1,4 @@ -module.exports.getScriptRuntimeFromType = scriptType => { +export const getScriptRuntimeFromType = scriptType => { switch (scriptType) { case "before": case "injected-after": diff --git a/config/webpack/utils/scripts.js b/config/webpack/utils/scripts.js index 427aaab..af58e0a 100644 --- a/config/webpack/utils/scripts.js +++ b/config/webpack/utils/scripts.js @@ -1,5 +1,11 @@ -const path = require("path"); -const scripts = require(path.resolve(SOURCE_DIR, "scripts.json")); +import path from "path"; +import fs from "fs"; + +const scripts = JSON.parse( + fs.readFileSync( + path.resolve("./src/scripts.json"), + ), +); const formattedScripts = {}; @@ -14,4 +20,4 @@ for (const scriptType in scripts) { } } -module.exports = formattedScripts; +export default formattedScripts; diff --git a/config/webpack/utils/shared-modules.js b/config/webpack/utils/shared-modules.js index 1584f0f..2b16fa5 100644 --- a/config/webpack/utils/shared-modules.js +++ b/config/webpack/utils/shared-modules.js @@ -1,6 +1,6 @@ -const path = require("path"); -const fs = require("fs"); +import path from "path"; +import fs from "fs"; -module.exports = fs.readdirSync(path.resolve(SOURCE_DIR, "shared")) +export default fs.readdirSync(path.resolve("src/shared")) .filter(sharedModule => !sharedModule.endsWith("import-shared.js")) .map(sharedModule => sharedModule.substring(0, sharedModule.length - 3)); -- cgit v1.2.3