aboutsummaryrefslogtreecommitdiffstats
path: root/config/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'config/webpack.config.js')
-rw-r--r--config/webpack.config.js105
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;
+};