This is an automated email from the ASF dual-hosted git repository. hainenber pushed a commit to branch migrate-from-deprecated-copy-webpack-plugin in repository https://gitbox.apache.org/repos/asf/superset.git
commit 19d7099742415c4c9aa515b724a6f56743dfe77c Author: hainenber <[email protected]> AuthorDate: Sun Oct 4 20:46:10 2026 +0700 chore(build): migrate from external `copy-webpack-plugin` to Webpack-native `output.css` Signed-off-by: hainenber <[email protected]> --- superset-frontend/package-lock.json | 48 ------------------------------------- superset-frontend/package.json | 1 - superset-frontend/webpack.config.js | 38 +++++++++++++---------------- 3 files changed, 17 insertions(+), 70 deletions(-) diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index 82fd1e21a6e..49ab97e9081 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -218,7 +218,6 @@ "baseline-browser-mapping": "^2.11.26", "cheerio": "1.2.0", "concurrently": "^10.0.5", - "copy-webpack-plugin": "^14.0.0", "cross-env": "^10.1.0", "css-loader": "^7.1.5", "eslint": "^10.10.0", @@ -19620,43 +19619,6 @@ "toggle-selection": "^1.0.6" } }, - "node_modules/copy-webpack-plugin": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", - "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-parent": "^6.0.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^7.0.3", - "tinyglobby": "^0.2.12" - }, - "engines": { - "node": ">= 20.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/core-assert": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", @@ -40468,16 +40430,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/serialize-javascript": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", - "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/serialize-query-params": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-2.0.4.tgz", diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 82c25e9585f..61c5541ff19 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -295,7 +295,6 @@ "baseline-browser-mapping": "^2.11.26", "cheerio": "1.2.0", "concurrently": "^10.0.5", - "copy-webpack-plugin": "^14.0.0", "cross-env": "^10.1.0", "css-loader": "^7.1.5", "eslint": "^10.10.0", diff --git a/superset-frontend/webpack.config.js b/superset-frontend/webpack.config.js index 60f4be9a5d2..bac050f9e4c 100644 --- a/superset-frontend/webpack.config.js +++ b/superset-frontend/webpack.config.js @@ -23,7 +23,6 @@ import { createRequire } from 'node:module'; import { fileURLToPath } from 'node:url'; import webpack from 'webpack'; import * as webpackBundleAnalyzer from 'webpack-bundle-analyzer'; -import CopyPlugin from 'copy-webpack-plugin'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import MinimizerPlugin from 'minimizer-webpack-plugin'; @@ -107,6 +106,23 @@ const output = { pathData.chunk?.name === 'service-worker' ? '../service-worker.js' : defaultChunkFilename, + copy: [ + 'package.json', + { from: 'src/assets/images', to: 'images' }, + // maplibre-gl 6's ESM-only build loads its worker from a real URL + // instead of an inlined blob (see MapLibre.tsx for the matching + // maplibregl.setWorkerUrl() call). The worker's own bundle does a + // relative ESM import of its "shared" chunk, so both files must be + // copied verbatim, unhashed, into the same output directory. + { + from: 'node_modules/maplibre-gl/dist/maplibre-gl-worker.mjs', + to: 'maplibre-gl-worker.mjs', + }, + { + from: 'node_modules/maplibre-gl/dist/maplibre-gl-shared.mjs', + to: 'maplibre-gl-shared.mjs', + }, + ], }; if (!isDevMode) { @@ -161,26 +177,6 @@ const plugins = [ 'process.env.SCARF_ANALYTICS': JSON.stringify(process.env.SCARF_ANALYTICS), }), - new CopyPlugin({ - patterns: [ - 'package.json', - { from: 'src/assets/images', to: 'images' }, - // maplibre-gl 6's ESM-only build loads its worker from a real URL - // instead of an inlined blob (see MapLibre.tsx for the matching - // maplibregl.setWorkerUrl() call). The worker's own bundle does a - // relative ESM import of its "shared" chunk, so both files must be - // copied verbatim, unhashed, into the same output directory. - { - from: 'node_modules/maplibre-gl/dist/maplibre-gl-worker.mjs', - to: 'maplibre-gl-worker.mjs', - }, - { - from: 'node_modules/maplibre-gl/dist/maplibre-gl-shared.mjs', - to: 'maplibre-gl-shared.mjs', - }, - ], - }), - // static pages new HtmlWebpackPlugin({ template: './src/assets/staticPages/404.html',
