From 6bb26f60adc568709920721afb6e14ca4eb247ee Mon Sep 17 00:00:00 2001 From: Cooldude2606 <25043174+Cooldude2606@users.noreply.github.com> Date: Fri, 12 Sep 2025 20:47:32 +0100 Subject: [PATCH] Add webpack to all plugins --- exp_commands/package.json | 7 ++++-- exp_commands/tsconfig.browser.json | 4 ++++ exp_commands/tsconfig.json | 3 ++- exp_commands/web/index.tsx | 0 exp_commands/webpack.config.js | 29 ++++++++++++++++++++++++ exp_gui/package.json | 7 ++++-- exp_gui/tsconfig.browser.json | 4 ++++ exp_gui/tsconfig.json | 3 ++- exp_gui/web/index.tsx | 0 exp_gui/webpack.config.js | 29 ++++++++++++++++++++++++ exp_legacy/package.json | 7 ++++-- exp_legacy/tsconfig.browser.json | 4 ++++ exp_legacy/tsconfig.json | 3 ++- exp_legacy/web/index.tsx | 0 exp_legacy/webpack.config.js | 29 ++++++++++++++++++++++++ exp_server_ups/tsconfig.json | 3 ++- exp_util/package.json | 7 ++++-- exp_util/tsconfig.browser.json | 4 ++++ exp_util/tsconfig.json | 3 ++- exp_util/web/index.tsx | 0 exp_util/webpack.config.js | 29 ++++++++++++++++++++++++ pnpm-lock.yaml | 36 ++++++++++++++++++++++++++++++ 22 files changed, 198 insertions(+), 13 deletions(-) create mode 100644 exp_commands/tsconfig.browser.json create mode 100644 exp_commands/web/index.tsx create mode 100644 exp_commands/webpack.config.js create mode 100644 exp_gui/tsconfig.browser.json create mode 100644 exp_gui/web/index.tsx create mode 100644 exp_gui/webpack.config.js create mode 100644 exp_legacy/tsconfig.browser.json create mode 100644 exp_legacy/web/index.tsx create mode 100644 exp_legacy/webpack.config.js create mode 100644 exp_util/tsconfig.browser.json create mode 100644 exp_util/web/index.tsx create mode 100644 exp_util/webpack.config.js diff --git a/exp_commands/package.json b/exp_commands/package.json index 1d8f7749..1bcf6c28 100644 --- a/exp_commands/package.json +++ b/exp_commands/package.json @@ -7,7 +7,7 @@ "repository": "explosivegaming/ExpCluster", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build" + "prepare": "tsc --build && webpack-cli --env production" }, "engines": { "node": ">=18" @@ -18,7 +18,10 @@ "devDependencies": { "@clusterio/lib": "catalog:", "@types/node": "catalog:", - "typescript": "catalog:" + "typescript": "catalog:", + "webpack": "catalog:", + "webpack-cli": "catalog:", + "webpack-merge": "catalog:" }, "dependencies": { "@expcluster/lib_util": "workspace:^", diff --git a/exp_commands/tsconfig.browser.json b/exp_commands/tsconfig.browser.json new file mode 100644 index 00000000..1ab2704e --- /dev/null +++ b/exp_commands/tsconfig.browser.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.browser.json", + "include": [ "web/**/*.tsx", "web/**/*.ts", "package.json" ], +} diff --git a/exp_commands/tsconfig.json b/exp_commands/tsconfig.json index a0473e75..303b8f28 100644 --- a/exp_commands/tsconfig.json +++ b/exp_commands/tsconfig.json @@ -1,6 +1,7 @@ { "files": [], "references": [ - { "path": "./tsconfig.node.json" } + { "path": "./tsconfig.node.json" }, + { "path": "./tsconfig.browser.json" } ] } diff --git a/exp_commands/web/index.tsx b/exp_commands/web/index.tsx new file mode 100644 index 00000000..e69de29b diff --git a/exp_commands/webpack.config.js b/exp_commands/webpack.config.js new file mode 100644 index 00000000..88d7cdf9 --- /dev/null +++ b/exp_commands/webpack.config.js @@ -0,0 +1,29 @@ +"use strict"; +const path = require("path"); +const webpack = require("webpack"); +const { merge } = require("webpack-merge"); + +const common = require("@clusterio/web_ui/webpack.common"); + +module.exports = (env = {}) => merge(common(env), { + context: __dirname, + entry: "./web/index.tsx", + output: { + path: path.resolve(__dirname, "dist", "web"), + }, + plugins: [ + new webpack.container.ModuleFederationPlugin({ + name: "exp_commands", + library: { type: "window", name: "plugin_exp_commands" }, + exposes: { + "./": "./index.ts", + "./package.json": "./package.json", + "./web": "./web/index.tsx", + }, + shared: { + "@clusterio/lib": { import: false }, + "@clusterio/web_ui": { import: false }, + }, + }), + ], +}); diff --git a/exp_gui/package.json b/exp_gui/package.json index 8e423254..4e112edb 100644 --- a/exp_gui/package.json +++ b/exp_gui/package.json @@ -7,7 +7,7 @@ "repository": "explosivegaming/ExpCluster", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build" + "prepare": "tsc --build && webpack-cli --env production" }, "engines": { "node": ">=18" @@ -18,7 +18,10 @@ "devDependencies": { "@clusterio/lib": "catalog:", "@types/node": "catalog:", - "typescript": "catalog:" + "typescript": "catalog:", + "webpack": "catalog:", + "webpack-cli": "catalog:", + "webpack-merge": "catalog:" }, "dependencies": { "@expcluster/lib_util": "workspace:^", diff --git a/exp_gui/tsconfig.browser.json b/exp_gui/tsconfig.browser.json new file mode 100644 index 00000000..1ab2704e --- /dev/null +++ b/exp_gui/tsconfig.browser.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.browser.json", + "include": [ "web/**/*.tsx", "web/**/*.ts", "package.json" ], +} diff --git a/exp_gui/tsconfig.json b/exp_gui/tsconfig.json index a0473e75..303b8f28 100644 --- a/exp_gui/tsconfig.json +++ b/exp_gui/tsconfig.json @@ -1,6 +1,7 @@ { "files": [], "references": [ - { "path": "./tsconfig.node.json" } + { "path": "./tsconfig.node.json" }, + { "path": "./tsconfig.browser.json" } ] } diff --git a/exp_gui/web/index.tsx b/exp_gui/web/index.tsx new file mode 100644 index 00000000..e69de29b diff --git a/exp_gui/webpack.config.js b/exp_gui/webpack.config.js new file mode 100644 index 00000000..640e5770 --- /dev/null +++ b/exp_gui/webpack.config.js @@ -0,0 +1,29 @@ +"use strict"; +const path = require("path"); +const webpack = require("webpack"); +const { merge } = require("webpack-merge"); + +const common = require("@clusterio/web_ui/webpack.common"); + +module.exports = (env = {}) => merge(common(env), { + context: __dirname, + entry: "./web/index.tsx", + output: { + path: path.resolve(__dirname, "dist", "web"), + }, + plugins: [ + new webpack.container.ModuleFederationPlugin({ + name: "exp_gui", + library: { type: "window", name: "plugin_exp_gui" }, + exposes: { + "./": "./index.ts", + "./package.json": "./package.json", + "./web": "./web/index.tsx", + }, + shared: { + "@clusterio/lib": { import: false }, + "@clusterio/web_ui": { import: false }, + }, + }), + ], +}); diff --git a/exp_legacy/package.json b/exp_legacy/package.json index 2c1d50c7..5ab1fc1f 100644 --- a/exp_legacy/package.json +++ b/exp_legacy/package.json @@ -7,7 +7,7 @@ "repository": "explosivegaming/ExpCluster", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build" + "prepare": "tsc --build && webpack-cli --env production" }, "engines": { "node": ">=18" @@ -18,7 +18,10 @@ "devDependencies": { "@clusterio/lib": "catalog:", "@types/node": "catalog:", - "typescript": "catalog:" + "typescript": "catalog:", + "webpack": "catalog:", + "webpack-cli": "catalog:", + "webpack-merge": "catalog:" }, "dependencies": { "@expcluster/lib_commands": "workspace:^", diff --git a/exp_legacy/tsconfig.browser.json b/exp_legacy/tsconfig.browser.json new file mode 100644 index 00000000..1ab2704e --- /dev/null +++ b/exp_legacy/tsconfig.browser.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.browser.json", + "include": [ "web/**/*.tsx", "web/**/*.ts", "package.json" ], +} diff --git a/exp_legacy/tsconfig.json b/exp_legacy/tsconfig.json index a0473e75..303b8f28 100644 --- a/exp_legacy/tsconfig.json +++ b/exp_legacy/tsconfig.json @@ -1,6 +1,7 @@ { "files": [], "references": [ - { "path": "./tsconfig.node.json" } + { "path": "./tsconfig.node.json" }, + { "path": "./tsconfig.browser.json" } ] } diff --git a/exp_legacy/web/index.tsx b/exp_legacy/web/index.tsx new file mode 100644 index 00000000..e69de29b diff --git a/exp_legacy/webpack.config.js b/exp_legacy/webpack.config.js new file mode 100644 index 00000000..c5405881 --- /dev/null +++ b/exp_legacy/webpack.config.js @@ -0,0 +1,29 @@ +"use strict"; +const path = require("path"); +const webpack = require("webpack"); +const { merge } = require("webpack-merge"); + +const common = require("@clusterio/web_ui/webpack.common"); + +module.exports = (env = {}) => merge(common(env), { + context: __dirname, + entry: "./web/index.tsx", + output: { + path: path.resolve(__dirname, "dist", "web"), + }, + plugins: [ + new webpack.container.ModuleFederationPlugin({ + name: "exp_legacy", + library: { type: "window", name: "plugin_exp_legacy" }, + exposes: { + "./": "./index.ts", + "./package.json": "./package.json", + "./web": "./web/index.tsx", + }, + shared: { + "@clusterio/lib": { import: false }, + "@clusterio/web_ui": { import: false }, + }, + }), + ], +}); diff --git a/exp_server_ups/tsconfig.json b/exp_server_ups/tsconfig.json index a0473e75..303b8f28 100644 --- a/exp_server_ups/tsconfig.json +++ b/exp_server_ups/tsconfig.json @@ -1,6 +1,7 @@ { "files": [], "references": [ - { "path": "./tsconfig.node.json" } + { "path": "./tsconfig.node.json" }, + { "path": "./tsconfig.browser.json" } ] } diff --git a/exp_util/package.json b/exp_util/package.json index 88b0af84..4ca76775 100644 --- a/exp_util/package.json +++ b/exp_util/package.json @@ -7,7 +7,7 @@ "repository": "explosivegaming/ExpCluster", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build" + "prepare": "tsc --build && webpack-cli --env production" }, "engines": { "node": ">=18" @@ -18,7 +18,10 @@ "devDependencies": { "@clusterio/lib": "catalog:", "@types/node": "catalog:", - "typescript": "catalog:" + "typescript": "catalog:", + "webpack": "catalog:", + "webpack-cli": "catalog:", + "webpack-merge": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:" diff --git a/exp_util/tsconfig.browser.json b/exp_util/tsconfig.browser.json new file mode 100644 index 00000000..1ab2704e --- /dev/null +++ b/exp_util/tsconfig.browser.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.browser.json", + "include": [ "web/**/*.tsx", "web/**/*.ts", "package.json" ], +} diff --git a/exp_util/tsconfig.json b/exp_util/tsconfig.json index a0473e75..303b8f28 100644 --- a/exp_util/tsconfig.json +++ b/exp_util/tsconfig.json @@ -1,6 +1,7 @@ { "files": [], "references": [ - { "path": "./tsconfig.node.json" } + { "path": "./tsconfig.node.json" }, + { "path": "./tsconfig.browser.json" } ] } diff --git a/exp_util/web/index.tsx b/exp_util/web/index.tsx new file mode 100644 index 00000000..e69de29b diff --git a/exp_util/webpack.config.js b/exp_util/webpack.config.js new file mode 100644 index 00000000..fc72ab41 --- /dev/null +++ b/exp_util/webpack.config.js @@ -0,0 +1,29 @@ +"use strict"; +const path = require("path"); +const webpack = require("webpack"); +const { merge } = require("webpack-merge"); + +const common = require("@clusterio/web_ui/webpack.common"); + +module.exports = (env = {}) => merge(common(env), { + context: __dirname, + entry: "./web/index.tsx", + output: { + path: path.resolve(__dirname, "dist", "web"), + }, + plugins: [ + new webpack.container.ModuleFederationPlugin({ + name: "exp_util", + library: { type: "window", name: "plugin_exp_util" }, + exposes: { + "./": "./index.ts", + "./package.json": "./package.json", + "./web": "./web/index.tsx", + }, + shared: { + "@clusterio/lib": { import: false }, + "@clusterio/web_ui": { import: false }, + }, + }), + ], +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86dbefca..58f4c8db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,6 +69,15 @@ importers: typescript: specifier: 'catalog:' version: 5.8.3 + webpack: + specifier: 'catalog:' + version: 5.98.0(@swc/core@1.11.16)(webpack-cli@5.1.4) + webpack-cli: + specifier: 'catalog:' + version: 5.1.4(webpack@5.98.0) + webpack-merge: + specifier: 'catalog:' + version: 5.10.0 exp_groups: dependencies: @@ -134,6 +143,15 @@ importers: typescript: specifier: 'catalog:' version: 5.8.3 + webpack: + specifier: 'catalog:' + version: 5.98.0(@swc/core@1.11.16)(webpack-cli@5.1.4) + webpack-cli: + specifier: 'catalog:' + version: 5.1.4(webpack@5.98.0) + webpack-merge: + specifier: 'catalog:' + version: 5.10.0 exp_legacy: dependencies: @@ -156,6 +174,15 @@ importers: typescript: specifier: 'catalog:' version: 5.8.3 + webpack: + specifier: 'catalog:' + version: 5.98.0(@swc/core@1.11.16)(webpack-cli@5.1.4) + webpack-cli: + specifier: 'catalog:' + version: 5.1.4(webpack@5.98.0) + webpack-merge: + specifier: 'catalog:' + version: 5.10.0 exp_scenario: dependencies: @@ -252,6 +279,15 @@ importers: typescript: specifier: 'catalog:' version: 5.8.3 + webpack: + specifier: 'catalog:' + version: 5.98.0(@swc/core@1.11.16)(webpack-cli@5.1.4) + webpack-cli: + specifier: 'catalog:' + version: 5.1.4(webpack@5.98.0) + webpack-merge: + specifier: 'catalog:' + version: 5.10.0 packages: