From e84bd97b99dafc67a9315c0a0da98549ec78cd19 Mon Sep 17 00:00:00 2001 From: bbassie <17990055+bbassie@users.noreply.github.com> Date: Wed, 28 Oct 2026 23:39:28 +0000 Subject: [PATCH] Build plugin web bundles with Vite clusterio#1130 replaced webpack with Vite and the web interface rejects webpack-built plugin bundles. Each plugin now builds with clusterioPlugin() from @clusterio/web_ui/vite.mjs, and the webpack configs and dependencies are gone. Co-Authored-By: Claude Opus 5.5 --- .npmignore | 2 +- exp_auto_restart/package.json | 7 +++-- exp_auto_restart/vite.config.js | 6 +++++ exp_auto_restart/webpack.config.cjs | 29 -------------------- exp_commands/package.json | 7 +++-- exp_commands/vite.config.js | 6 +++++ exp_commands/webpack.config.cjs | 29 -------------------- exp_discord_auth/package.json | 8 +++--- exp_discord_auth/vite.config.js | 6 +++++ exp_discord_auth/webpack.config.cjs | 34 ------------------------ exp_groups/package.json | 8 +++--- exp_groups/vite.config.js | 6 +++++ exp_groups/webpack.config.cjs | 34 ------------------------ exp_gui/package.json | 7 +++-- exp_gui/vite.config.js | 6 +++++ exp_gui/webpack.config.cjs | 29 -------------------- exp_player_statistics/package.json | 6 ++--- exp_player_statistics/vite.config.js | 6 +++++ exp_player_statistics/webpack.config.cjs | 34 ------------------------ exp_reports/package.json | 10 +++---- exp_reports/vite.config.js | 6 +++++ exp_reports/webpack.config.cjs | 34 ------------------------ exp_roles/package.json | 10 +++---- exp_roles/vite.config.js | 6 +++++ exp_roles/webpack.config.cjs | 34 ------------------------ exp_scenario/package.json | 6 ++--- exp_scenario/vite.config.js | 6 +++++ exp_scenario/webpack.config.cjs | 32 ---------------------- exp_server_list/package.json | 6 ++--- exp_server_list/vite.config.js | 6 +++++ exp_server_list/webpack.config.cjs | 29 -------------------- exp_server_ups/package.json | 11 ++++---- exp_server_ups/vite.config.js | 6 +++++ exp_server_ups/webpack.config.cjs | 29 -------------------- exp_util/package.json | 7 +++-- exp_util/vite.config.js | 6 +++++ exp_util/webpack.config.cjs | 29 -------------------- 37 files changed, 110 insertions(+), 433 deletions(-) create mode 100644 exp_auto_restart/vite.config.js delete mode 100644 exp_auto_restart/webpack.config.cjs create mode 100644 exp_commands/vite.config.js delete mode 100644 exp_commands/webpack.config.cjs create mode 100644 exp_discord_auth/vite.config.js delete mode 100644 exp_discord_auth/webpack.config.cjs create mode 100644 exp_groups/vite.config.js delete mode 100644 exp_groups/webpack.config.cjs create mode 100644 exp_gui/vite.config.js delete mode 100644 exp_gui/webpack.config.cjs create mode 100644 exp_player_statistics/vite.config.js delete mode 100644 exp_player_statistics/webpack.config.cjs create mode 100644 exp_reports/vite.config.js delete mode 100644 exp_reports/webpack.config.cjs create mode 100644 exp_roles/vite.config.js delete mode 100644 exp_roles/webpack.config.cjs create mode 100644 exp_scenario/vite.config.js delete mode 100644 exp_scenario/webpack.config.cjs create mode 100644 exp_server_list/vite.config.js delete mode 100644 exp_server_list/webpack.config.cjs create mode 100644 exp_server_ups/vite.config.js delete mode 100644 exp_server_ups/webpack.config.cjs create mode 100644 exp_util/vite.config.js delete mode 100644 exp_util/webpack.config.cjs diff --git a/.npmignore b/.npmignore index ad8bdb41..e8289707 100644 --- a/.npmignore +++ b/.npmignore @@ -1,3 +1,3 @@ -webpack.config.js +vite.config.js dist/web/build dist/browser diff --git a/exp_auto_restart/package.json b/exp_auto_restart/package.json index e1e47930..aeae5453 100644 --- a/exp_auto_restart/package.json +++ b/exp_auto_restart/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production", + "prepare": "tsc --build && vite build", "test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js", "coverage": "tap --coverage-report=text test/*.test.js" }, @@ -27,12 +27,11 @@ "devDependencies": { "@clusterio/controller": "workspace:^", "@clusterio/lib": "workspace:^", + "@clusterio/web_ui": "workspace:^", "@types/node": "catalog:", "tap": "^21.1.0", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "publishConfig": { "access": "public" diff --git a/exp_auto_restart/vite.config.js b/exp_auto_restart/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_auto_restart/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_auto_restart/webpack.config.cjs b/exp_auto_restart/webpack.config.cjs deleted file mode 100644 index f4b83f6c..00000000 --- a/exp_auto_restart/webpack.config.cjs +++ /dev/null @@ -1,29 +0,0 @@ -"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_auto_restart", - library: { type: "window", name: "plugin_exp_auto_restart" }, - 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_commands/package.json b/exp_commands/package.json index 993b109b..c72624b3 100644 --- a/exp_commands/package.json +++ b/exp_commands/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production" + "prepare": "tsc --build && vite build" }, "engines": { "node": ">=22" @@ -25,11 +25,10 @@ "devDependencies": { "@clusterio/host": "workspace:^", "@clusterio/lib": "workspace:^", + "@clusterio/web_ui": "workspace:^", "@types/node": "catalog:", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "dependencies": { "@expcluster/lib_util": "workspace:^", diff --git a/exp_commands/vite.config.js b/exp_commands/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_commands/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_commands/webpack.config.cjs b/exp_commands/webpack.config.cjs deleted file mode 100644 index 88d7cdf9..00000000 --- a/exp_commands/webpack.config.cjs +++ /dev/null @@ -1,29 +0,0 @@ -"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_discord_auth/package.json b/exp_discord_auth/package.json index f37e07b0..9f01e393 100644 --- a/exp_discord_auth/package.json +++ b/exp_discord_auth/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production", + "prepare": "tsc --build && vite build", "test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js", "coverage": "tap --coverage-report=text test/*.test.js" }, @@ -40,11 +40,9 @@ "react": "catalog:", "react-dom": "catalog:", "react-router-dom": "catalog:", - "typescript": "catalog:", - "webpack": "catalog:", "tap": "^21.1.0", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "typescript": "catalog:", + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:", diff --git a/exp_discord_auth/vite.config.js b/exp_discord_auth/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_discord_auth/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_discord_auth/webpack.config.cjs b/exp_discord_auth/webpack.config.cjs deleted file mode 100644 index 0b445740..00000000 --- a/exp_discord_auth/webpack.config.cjs +++ /dev/null @@ -1,34 +0,0 @@ -"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_discord_auth", - library: { type: "window", name: "plugin_exp_discord_auth" }, - exposes: { - "./": "./index.ts", - "./package.json": "./package.json", - "./web": "./web/index.tsx", - }, - shared: { - "@clusterio/lib": { import: false }, - "@clusterio/web_ui": { import: false }, - "antd": { import: false }, - "react": { import: false }, - "react-dom": { import: false }, - "react-router": { import: false }, - "react-router-dom": { import: false }, - }, - }), - ], -}); diff --git a/exp_groups/package.json b/exp_groups/package.json index 4346ec28..e50b3eb9 100644 --- a/exp_groups/package.json +++ b/exp_groups/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production" + "prepare": "tsc --build && vite build" }, "engines": { "node": ">=22" @@ -39,9 +39,7 @@ "react-dom": "catalog:", "react-router-dom": "catalog:", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:" @@ -54,4 +52,4 @@ "clusterio-plugin", "factorio" ] -} \ No newline at end of file +} diff --git a/exp_groups/vite.config.js b/exp_groups/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_groups/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_groups/webpack.config.cjs b/exp_groups/webpack.config.cjs deleted file mode 100644 index b1f01165..00000000 --- a/exp_groups/webpack.config.cjs +++ /dev/null @@ -1,34 +0,0 @@ -"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_groups", - library: { type: "window", name: "plugin_exp_groups" }, - exposes: { - "./": "./index.ts", - "./package.json": "./package.json", - "./web": "./web/index.tsx", - }, - shared: { - "@clusterio/lib": { import: false }, - "@clusterio/web_ui": { import: false }, - "antd": { import: false }, - "react": { import: false }, - "react-dom": { import: false }, - "react-router": { import: false }, - "react-router-dom": { import: false }, - }, - }), - ], -}); diff --git a/exp_gui/package.json b/exp_gui/package.json index a9ba7998..57273995 100644 --- a/exp_gui/package.json +++ b/exp_gui/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production" + "prepare": "tsc --build && vite build" }, "engines": { "node": ">=22" @@ -25,11 +25,10 @@ "devDependencies": { "@clusterio/host": "workspace:^", "@clusterio/lib": "workspace:^", + "@clusterio/web_ui": "workspace:^", "@types/node": "catalog:", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "dependencies": { "@expcluster/lib_util": "workspace:^", diff --git a/exp_gui/vite.config.js b/exp_gui/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_gui/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_gui/webpack.config.cjs b/exp_gui/webpack.config.cjs deleted file mode 100644 index 640e5770..00000000 --- a/exp_gui/webpack.config.cjs +++ /dev/null @@ -1,29 +0,0 @@ -"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_player_statistics/package.json b/exp_player_statistics/package.json index 0f3cb47a..17ac2d00 100644 --- a/exp_player_statistics/package.json +++ b/exp_player_statistics/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production", + "prepare": "tsc --build && vite build", "test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js", "coverage": "tap --coverage-report=text test/*.test.js" }, @@ -42,9 +42,7 @@ "react-router-dom": "catalog:", "tap": "^21.1.0", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:", diff --git a/exp_player_statistics/vite.config.js b/exp_player_statistics/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_player_statistics/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_player_statistics/webpack.config.cjs b/exp_player_statistics/webpack.config.cjs deleted file mode 100644 index 7834f626..00000000 --- a/exp_player_statistics/webpack.config.cjs +++ /dev/null @@ -1,34 +0,0 @@ -"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_player_statistics", - library: { type: "window", name: "plugin_exp_player_statistics" }, - exposes: { - "./": "./index.ts", - "./package.json": "./package.json", - "./web": "./web/index.tsx", - }, - shared: { - "@clusterio/lib": { import: false }, - "@clusterio/web_ui": { import: false }, - "antd": { import: false }, - "react": { import: false }, - "react-dom": { import: false }, - "react-router": { import: false }, - "react-router-dom": { import: false }, - }, - }), - ], -}); diff --git a/exp_reports/package.json b/exp_reports/package.json index 52c98fbc..741efab9 100644 --- a/exp_reports/package.json +++ b/exp_reports/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production", + "prepare": "tsc --build && vite build", "test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js", "coverage": "tap --coverage-report=text test/*.test.js" }, @@ -37,15 +37,13 @@ "@types/node": "catalog:", "@types/react": "catalog:", "antd": "catalog:", + "fengari": "^0.1.5", "react": "catalog:", "react-dom": "catalog:", "react-router-dom": "catalog:", - "typescript": "catalog:", - "webpack": "catalog:", - "fengari": "^0.1.5", "tap": "^21.1.0", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "typescript": "catalog:", + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:", diff --git a/exp_reports/vite.config.js b/exp_reports/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_reports/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_reports/webpack.config.cjs b/exp_reports/webpack.config.cjs deleted file mode 100644 index 4f147284..00000000 --- a/exp_reports/webpack.config.cjs +++ /dev/null @@ -1,34 +0,0 @@ -"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_reports", - library: { type: "window", name: "plugin_exp_reports" }, - exposes: { - "./": "./index.ts", - "./package.json": "./package.json", - "./web": "./web/index.tsx", - }, - shared: { - "@clusterio/lib": { import: false }, - "@clusterio/web_ui": { import: false }, - "antd": { import: false }, - "react": { import: false }, - "react-dom": { import: false }, - "react-router": { import: false }, - "react-router-dom": { import: false }, - }, - }), - ], -}); diff --git a/exp_roles/package.json b/exp_roles/package.json index 0acaa89c..9636bee0 100644 --- a/exp_roles/package.json +++ b/exp_roles/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production", + "prepare": "tsc --build && vite build", "test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js", "coverage": "tap --coverage-report=text test/*.test.js" }, @@ -37,15 +37,13 @@ "@types/node": "catalog:", "@types/react": "catalog:", "antd": "catalog:", + "fengari": "^0.1.5", "react": "catalog:", "react-dom": "catalog:", "react-router-dom": "catalog:", - "typescript": "catalog:", - "webpack": "catalog:", - "fengari": "^0.1.5", "tap": "^21.1.0", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "typescript": "catalog:", + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:" diff --git a/exp_roles/vite.config.js b/exp_roles/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_roles/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_roles/webpack.config.cjs b/exp_roles/webpack.config.cjs deleted file mode 100644 index 20f6cfb5..00000000 --- a/exp_roles/webpack.config.cjs +++ /dev/null @@ -1,34 +0,0 @@ -"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_roles", - library: { type: "window", name: "plugin_exp_roles" }, - exposes: { - "./": "./index.ts", - "./package.json": "./package.json", - "./web": "./web/index.tsx", - }, - shared: { - "@clusterio/lib": { import: false }, - "@clusterio/web_ui": { import: false }, - "antd": { import: false }, - "react": { import: false }, - "react-dom": { import: false }, - "react-router": { import: false }, - "react-router-dom": { import: false }, - }, - }), - ], -}); diff --git a/exp_scenario/package.json b/exp_scenario/package.json index c7ba8c29..800eb7bb 100644 --- a/exp_scenario/package.json +++ b/exp_scenario/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production", + "prepare": "tsc --build && vite build", "test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js", "coverage": "tap --coverage-report=text test/*.test.js" }, @@ -41,9 +41,7 @@ "react-dom": "catalog:", "tap": "^21.1.0", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "dependencies": { "@expcluster/lib_commands": "workspace:^", diff --git a/exp_scenario/vite.config.js b/exp_scenario/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_scenario/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_scenario/webpack.config.cjs b/exp_scenario/webpack.config.cjs deleted file mode 100644 index b507169f..00000000 --- a/exp_scenario/webpack.config.cjs +++ /dev/null @@ -1,32 +0,0 @@ -"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_scenario", - library: { type: "window", name: "plugin_exp_scenario" }, - exposes: { - "./": "./index.ts", - "./package.json": "./package.json", - "./web": "./web/index.tsx", - }, - shared: { - "@clusterio/lib": { import: false }, - "@clusterio/web_ui": { import: false }, - "antd": { import: false }, - "react": { import: false }, - "react-dom": { import: false }, - }, - }), - ], -}); diff --git a/exp_server_list/package.json b/exp_server_list/package.json index a500aa6e..a1b48792 100644 --- a/exp_server_list/package.json +++ b/exp_server_list/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production", + "prepare": "tsc --build && vite build", "test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js", "coverage": "tap --coverage-report=text test/*.test.js" }, @@ -37,9 +37,7 @@ "fengari": "^0.1.5", "tap": "^21.1.0", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:", diff --git a/exp_server_list/vite.config.js b/exp_server_list/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_server_list/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_server_list/webpack.config.cjs b/exp_server_list/webpack.config.cjs deleted file mode 100644 index 124ef5d0..00000000 --- a/exp_server_list/webpack.config.cjs +++ /dev/null @@ -1,29 +0,0 @@ -"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_server_list", - library: { type: "window", name: "plugin_exp_server_list" }, - 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/package.json b/exp_server_ups/package.json index 07401a1b..98431728 100644 --- a/exp_server_ups/package.json +++ b/exp_server_ups/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production" + "prepare": "tsc --build && vite build" }, "engines": { "node": ">=22" @@ -25,11 +25,10 @@ "devDependencies": { "@clusterio/host": "workspace:^", "@clusterio/lib": "workspace:^", - "typescript": "catalog:", + "@clusterio/web_ui": "workspace:^", "@types/node": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "typescript": "catalog:", + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:", @@ -45,4 +44,4 @@ "clusterio-plugin", "factorio" ] -} \ No newline at end of file +} diff --git a/exp_server_ups/vite.config.js b/exp_server_ups/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_server_ups/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_server_ups/webpack.config.cjs b/exp_server_ups/webpack.config.cjs deleted file mode 100644 index d0eaa345..00000000 --- a/exp_server_ups/webpack.config.cjs +++ /dev/null @@ -1,29 +0,0 @@ -"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_server_ups", - library: { type: "window", name: "plugin_exp_server_ups" }, - 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_util/package.json b/exp_util/package.json index 5c6c2073..1d1fd3dc 100644 --- a/exp_util/package.json +++ b/exp_util/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/node/index.js", "scripts": { - "prepare": "tsc --build && webpack-cli --env production" + "prepare": "tsc --build && vite build" }, "engines": { "node": ">=22" @@ -25,11 +25,10 @@ "devDependencies": { "@clusterio/host": "workspace:^", "@clusterio/lib": "workspace:^", + "@clusterio/web_ui": "workspace:^", "@types/node": "catalog:", "typescript": "catalog:", - "webpack": "catalog:", - "webpack-cli": "catalog:", - "webpack-merge": "catalog:" + "vite": "catalog:" }, "dependencies": { "@sinclair/typebox": "catalog:" diff --git a/exp_util/vite.config.js b/exp_util/vite.config.js new file mode 100644 index 00000000..5db067d0 --- /dev/null +++ b/exp_util/vite.config.js @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import { clusterioPlugin } from "@clusterio/web_ui/vite.mjs"; + +export default defineConfig({ + plugins: [clusterioPlugin()], +}); diff --git a/exp_util/webpack.config.cjs b/exp_util/webpack.config.cjs deleted file mode 100644 index fc72ab41..00000000 --- a/exp_util/webpack.config.cjs +++ /dev/null @@ -1,29 +0,0 @@ -"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 }, - }, - }), - ], -});