diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-02-09 13:50:24 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-02-09 13:50:24 +0530 |
| commit | 0404234c26f6813025e9eedd9981e1536db28b2a (patch) | |
| tree | 204e2ca55540e594e4d88eba87191b90794ddaf8 /config/webpack/utils | |
| parent | 915947e3e7ab7c1fa07596ab4b13bf6e1cc50b76 (diff) | |
| download | banglar-bhumi-utils-0404234c26f6813025e9eedd9981e1536db28b2a.tar.gz banglar-bhumi-utils-0404234c26f6813025e9eedd9981e1536db28b2a.zip | |
Combined the scripts with the same runtime into a single file to improve performance
Diffstat (limited to 'config/webpack/utils')
| -rw-r--r-- | config/webpack/utils/generate-script-build-config.js | 64 | ||||
| -rw-r--r-- | config/webpack/utils/inline-javascript.js | 5 | ||||
| -rw-r--r-- | config/webpack/utils/script-runtime.js | 15 |
3 files changed, 16 insertions, 68 deletions
diff --git a/config/webpack/utils/generate-script-build-config.js b/config/webpack/utils/generate-script-build-config.js deleted file mode 100644 index a6f9f54..0000000 --- a/config/webpack/utils/generate-script-build-config.js +++ /dev/null @@ -1,64 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -const SanitizeScriptsImportPlugin = require("../plugins/sanitize-scripts-import-webpack-plugin"); -const InjectScriptPlugin = require("../plugins/inject-script-webpack-plugin"); -const inlineJavascript = require("./inline-javascript"); - -const scripts = require(path.resolve(process.env.SOURCE_DIR, "scripts.json")); - -const getImportStatementForScript = script => { - const importPath = path.resolve(process.env.SOURCE_DIR, "scripts", script); - return `import "${importPath}";`; -}; - -const getVirtualEntry = scriptType => { - const importStatements = Object.keys(scripts[scriptType]).map(getImportStatementForScript).join("\n"); - - return inlineJavascript(importStatements); -} - -let injectedScriptsCount = 0; -const generateScriptBuildConfig = scriptType => { - return { - entry: getVirtualEntry(scriptType), - name: scriptType, - mode: "production", - output: { - filename: `${scriptType}.js` - }, - resolve: { - extensions: ["", ".ts", ".js"], - alias: { - "@": process.env.SOURCE_DIR - } - }, - module: { - rules: [ - { - test: /\.tsx?$/, - loader: "ts-loader", - options: { - configFile: "config/tsconfig.json" - } - }, - { - test: new RegExp(`^${path.resolve(process.env.SOURCE_DIR, "scripts")}`), - loader: path.resolve(process.env.CONFIG_DIR, "webpack/loaders/scoped-loader") - } - ] - }, - plugins: [ - new SanitizeScriptsImportPlugin() - ].concat( - scriptType.startsWith("injected") - ? [new InjectScriptPlugin({ - onload: scriptType === "injected_and_loaded", - isFirst: injectedScriptsCount++ <= 0 - })] - : [] - ) - }; -}; - -module.exports = generateScriptBuildConfig; diff --git a/config/webpack/utils/inline-javascript.js b/config/webpack/utils/inline-javascript.js index b9348cc..ea344a4 100644 --- a/config/webpack/utils/inline-javascript.js +++ b/config/webpack/utils/inline-javascript.js @@ -1,4 +1 @@ -module.exports = code => { - const base64 = Buffer.from(code).toString("base64"); - return `data:text/javascript;base64,${base64}`; -}; +module.exports.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 new file mode 100644 index 0000000..394e87e --- /dev/null +++ b/config/webpack/utils/script-runtime.js @@ -0,0 +1,15 @@ +module.exports.getScriptRuntimeFromType = scriptType => { + switch (scriptType) { + case "before": + case "injected": + case "injected_and_loaded": + return "document_start"; + + case "rendered": + return "document_end"; + + case "loaded": + default: + return "document_idle"; + } +}; |
