Skip to content

Commit c812bc7

Browse files
committed
build: updated webpack config generation
1 parent 22f35cc commit c812bc7

34 files changed

+200
-314
lines changed

packages/webpack-config/src/bundles/buildBundle.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { ExternalData } from "../common/ExternalData";
2-
import { getBundleEntry } from "./getBundleEntry";
32
import { getConfig } from "../common/getConfig";
43

54
interface BundleParams {
@@ -25,22 +24,20 @@ GitHub : https://www.github.com/matteobruni/tsparticles
2524
How to use? : Check the GitHub README
2625
v${version}`,
2726
minBanner = `tsParticles ${fixBundleName}v${version} by Matteo Bruni`,
28-
configs = [
29-
getConfig({
30-
entry: getBundleEntry(moduleName, false),
31-
version,
32-
banner,
33-
minBanner: minBanner,
34-
dir,
35-
bundle: false,
36-
additionalExternals,
37-
}),
38-
];
27+
configs = getConfig({
28+
entry: { format: "", name: moduleName, bundle: false },
29+
version,
30+
banner,
31+
minBanner: minBanner,
32+
dir,
33+
bundle: false,
34+
additionalExternals,
35+
});
3936

4037
if (bundle ?? true) {
4138
configs.push(
42-
getConfig({
43-
entry: getBundleEntry(`${moduleName}.bundle`, true),
39+
...getConfig({
40+
entry: { format: "", name: `${moduleName}.bundle`, bundle: true },
4441
version,
4542
banner,
4643
minBanner: minBanner,

packages/webpack-config/src/bundles/getBundleEntry.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/webpack-config/src/common/getConfig.ts

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
22
import type { ExternalData } from "./ExternalData";
33
import TerserPlugin from "terser-webpack-plugin";
4+
import { getEntry } from "./getEntry.js";
45
import { getExternals } from "./getExternals";
56
import path from "path";
67
import webpack from "webpack";
@@ -10,25 +11,35 @@ interface ConfigParams {
1011
banner: string;
1112
bundle?: boolean;
1213
dir: string;
13-
entry: unknown;
14+
entry: {
15+
bundle: boolean;
16+
format: string;
17+
name?: string;
18+
};
1419
minBanner: string;
1520
version: string;
1621
}
1722

18-
const getConfig = (params: ConfigParams): unknown => {
23+
/**
24+
*
25+
* @param params -
26+
* @param min -
27+
* @returns the webpack configuration
28+
*/
29+
function getSingleConfig(params: ConfigParams, min: boolean): unknown {
1930
const { additionalExternals, banner, bundle, dir, entry, minBanner, version } = params;
2031

2132
return {
22-
entry: entry,
23-
mode: "production",
33+
entry: getEntry({ ...entry, min }),
34+
mode: min ? "production" : "development",
2435
output: {
2536
path: path.resolve(dir, "dist"),
26-
filename: "[name].js",
37+
filename: min ? "[name].min.js" : "[name].js",
2738
library: {
2839
type: "umd2",
2940
},
3041
globalObject: "this",
31-
chunkFilename: "[name].js",
42+
chunkFilename: min ? "[name].min.js" : "[name].js",
3243
},
3344
resolve: {
3445
extensions: [".cjs", ".mjs", ".js", ".json"],
@@ -81,6 +92,10 @@ const getConfig = (params: ConfigParams): unknown => {
8192
hints: false,
8293
},
8394
};
95+
}
96+
97+
const getConfig = (params: ConfigParams): unknown[] => {
98+
return [getSingleConfig(params, false), getSingleConfig(params, true)];
8499
};
85100

86101
export { getConfig };

packages/webpack-config/src/common/getEntry.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
1-
const getEntry = (format: string, name?: string, bundle?: boolean): unknown => {
2-
const fileName = bundle ? "bundle" : "index",
1+
interface IEntryParams {
2+
bundle: boolean;
3+
format: string;
4+
min: boolean;
5+
name?: string;
6+
}
7+
8+
const getEntry = (data: IEntryParams): unknown => {
9+
const { bundle, format, min, name } = data,
10+
fileName = bundle ? "bundle" : "index",
311
fixFormat = format ? `.${format}` : "",
412
fixName = name ? `.${name}` : "",
13+
fixMin = min ? ".min" : "",
514
obj = {} as Record<string, string>;
615

7-
obj[`tsparticles${fixFormat}${fixName}`] = `./dist/browser/${fileName}.js`;
8-
obj[`tsparticles${fixFormat}${fixName}.min`] = `./dist/browser/${fileName}.js`;
16+
obj[`tsparticles${fixFormat}${fixName}${fixMin}`] = `./dist/browser/${fileName}.js`;
917

1018
return obj;
1119
};

packages/webpack-config/src/effects/buildEffect.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { ExternalData } from "../common/ExternalData";
22
import { getConfig } from "../common/getConfig";
3-
import { getEffectEntry } from "./getEffctEntry";
43

54
interface EffectParams {
65
additionalExternals?: ExternalData[];
@@ -24,17 +23,15 @@ How to use? : Check the GitHub README
2423
v${version}`,
2524
minBanner = `tsParticles ${effectName} Shape v${version} by Matteo Bruni`;
2625

27-
return [
28-
getConfig({
29-
entry: getEffectEntry(moduleName, false),
30-
version,
31-
banner,
32-
minBanner: minBanner,
33-
dir,
34-
bundle: false,
35-
additionalExternals,
36-
}),
37-
];
26+
return getConfig({
27+
entry: { format: "effect", name: moduleName, bundle: false },
28+
version,
29+
banner,
30+
minBanner: minBanner,
31+
dir,
32+
bundle: false,
33+
additionalExternals,
34+
});
3835
}
3936

4037
export { loadParticlesEffect };

packages/webpack-config/src/effects/getEffctEntry.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/webpack-config/src/engine/buildEngine.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { ExternalData } from "../common/ExternalData";
22
import { getConfig } from "../common/getConfig";
3-
import { getEngineEntry } from "./getEngineEntry";
43

54
interface EngineParams {
65
additionalExternals?: ExternalData[];
@@ -24,17 +23,15 @@ How to use?: Check the GitHub README
2423
------------------------------------------------------`,
2524
minBanner = `tsParticles Engine v${version} by Matteo Bruni`;
2625

27-
return [
28-
getConfig({
29-
entry: getEngineEntry(),
30-
version,
31-
banner,
32-
minBanner: minBanner,
33-
dir,
34-
bundle: false,
35-
additionalExternals,
36-
}),
37-
];
26+
return getConfig({
27+
entry: { format: "engine", bundle: false },
28+
version,
29+
banner,
30+
minBanner: minBanner,
31+
dir,
32+
bundle: false,
33+
additionalExternals,
34+
});
3835
}
3936

4037
export { loadParticlesEngine };

packages/webpack-config/src/engine/getEngineEntry.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/webpack-config/src/interactions/buildInteraction.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { ExternalData } from "../common/ExternalData";
22
import { getConfig } from "../common/getConfig";
3-
import { getInteractionEntry } from "./getInteractionEntry";
43

54
interface InteractionParams {
65
additionalExternals?: ExternalData[];
@@ -24,17 +23,19 @@ How to use? : Check the GitHub README
2423
v${version}`,
2524
minBanner = `tsParticles ${pluginName} Interaction v${version} by Matteo Bruni`;
2625

27-
return [
28-
getConfig({
29-
entry: getInteractionEntry(moduleName, false),
30-
version,
31-
banner,
32-
minBanner: minBanner,
33-
dir,
26+
return getConfig({
27+
entry: {
28+
format: "interaction",
29+
name: moduleName,
3430
bundle: false,
35-
additionalExternals,
36-
}),
37-
];
31+
},
32+
version,
33+
banner,
34+
minBanner: minBanner,
35+
dir,
36+
bundle: false,
37+
additionalExternals,
38+
});
3839
}
3940

4041
export { loadParticlesInteraction };

packages/webpack-config/src/interactions/external/buildInteractionExternal.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { ExternalData } from "../../common/ExternalData";
22
import { getConfig } from "../../common/getConfig";
3-
import { getInteractionExternalEntry } from "./getInteractionExternalEntry";
43

54
interface InteractionExternalParams {
65
additionalExternals?: ExternalData[];
@@ -24,17 +23,19 @@ How to use? : Check the GitHub README
2423
v${version}`,
2524
minBanner = `tsParticles ${pluginName} External Interaction v${version} by Matteo Bruni`;
2625

27-
return [
28-
getConfig({
29-
entry: getInteractionExternalEntry(moduleName, false),
30-
version,
31-
banner,
32-
minBanner: minBanner,
33-
dir,
26+
return getConfig({
27+
entry: {
28+
format: "interaction.external",
29+
name: moduleName,
3430
bundle: false,
35-
additionalExternals,
36-
}),
37-
];
31+
},
32+
version,
33+
banner,
34+
minBanner: minBanner,
35+
dir,
36+
bundle: false,
37+
additionalExternals,
38+
});
3839
}
3940

4041
export { loadParticlesInteractionExternal };

0 commit comments

Comments
 (0)