diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-02-09 22:18:58 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-02-09 22:18:58 +0530 |
| commit | b1785a889f337460b29551bc7f85728aefd9df71 (patch) | |
| tree | 19fbc6837ea606e9597d7975aeda010186563544 /config/webpack.config.js | |
| parent | 3817d68c29862211afad739131d457864ef86826 (diff) | |
| download | banglar-bhumi-utils-b1785a889f337460b29551bc7f85728aefd9df71.tar.gz banglar-bhumi-utils-b1785a889f337460b29551bc7f85728aefd9df71.zip | |
Using a single webpack config for all scripts.
Diffstat (limited to 'config/webpack.config.js')
| -rw-r--r-- | config/webpack.config.js | 105 |
1 files changed, 43 insertions, 62 deletions
diff --git a/config/webpack.config.js b/config/webpack.config.js index f4b05c7..fb618db 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -18,82 +18,63 @@ let scriptBuildConfigs = []; let injectedScriptsCount = 0; -const allScripts = {}; +const entries = {}; + +const _scripts = {}; for (const scriptType in scripts) { - const currentScripts = scripts[scriptType]; - for (const script in currentScripts) { - allScripts[currentScripts[script]] = allScripts[currentScripts[script]] || {}; - allScripts[currentScripts[script]][getScriptRuntimeFromType(scriptType)] = [ - ...(allScripts[currentScripts[script]][getScriptRuntimeFromType(scriptType)] || []), - script - ] - } + _scripts[getScriptRuntimeFromType(scriptType)] = { + ..._scripts[getScriptRuntimeFromType(scriptType)], + ...scripts[scriptType] + }; } -for (const scriptPath in allScripts) { - for (const scriptRuntime in allScripts[scriptPath]) { - const scripts = allScripts[scriptPath]; - if (scripts[scriptRuntime]) { - const importStatements = scripts[scriptRuntime].map(script => +for (const scriptRuntime in _scripts) { + const scripts = _scripts[scriptRuntime]; + for (const script in scripts) { + const scriptPath = scripts[script]; + entries[`${scriptRuntime} - "${scriptPath}"`] = { + import: inlineJavascript(Object.keys(scripts).map(script => `import "${path.resolve(process.env.SOURCE_DIR, "scripts", script)}";` - ).join("\n"); - - scriptBuildConfigs.push({ - entry: inlineJavascript(importStatements), - name: `${scriptPath} - ${scriptRuntime}`, - mode: "production", - output: { - filename: `scripts/${getFileNameHash(scriptPath)}/${scriptRuntime}.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( - scriptRuntime === "document_start" - ? [new InjectScriptPlugin()] - : [] - ) - }); - } + ).join("\n")), + filename: `scripts/${getFileNameHash(scriptPath)}/${scriptRuntime}.js` + }; } } -scriptBuildConfigs.push({ - name: "manifest", - entry: inlineJavascript(""), - output: { - filename: `manifest.json` +module.exports = { + entry: entries, + mode: "production", + 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(), + new InjectScriptPlugin(), new CopyPlugin({ patterns: [{ from: path.resolve(process.env.ROOT_DIR, "static"), to: "./" }] }), - new CreateManifestPlugin({ scripts }) + new CreateManifestPlugin() ] -}); - -module.exports = scriptBuildConfigs; +}; |
