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: