From 1dbd5aaacaa0486e5d95a9e9898263905ad5880d Mon Sep 17 00:00:00 2001
From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com>
Date: Sat, 29 Aug 2026 11:34:25 +0000
Subject: [PATCH 1/5] docs: drop the built-in-superseded loaders and plugins
from the indexes
css-loader, style-loader, html-loader, MiniCssExtractPlugin and
HtmlWebpackPlugin are no longer listed on /loaders/ and /plugins/, the
same treatment file-loader, url-loader and raw-loader got when asset
modules replaced them. Each page stays reachable and is linked from the
note that replaces its entry, so the options with no built-in equivalent
are still documented.
---
src/content/loaders/index.mdx | 7 ++---
src/content/plugins/index.mdx | 52 +++++++++++++++++------------------
2 files changed, 27 insertions(+), 32 deletions(-)
diff --git a/src/content/loaders/index.mdx b/src/content/loaders/index.mdx
index e1fad406b7d2..199da44affc3 100644
--- a/src/content/loaders/index.mdx
+++ b/src/content/loaders/index.mdx
@@ -50,9 +50,8 @@ Loaders are activated by using `loadername!` prefixes in `import .. from "mod";`
## Templating
-T> Webpack has experimental built-in HTML support ([`experiments.html`](/configuration/experiments/#experimentshtml)) that covers the common setup. Template engines still need their loader — see [What's built-in](/guides/native-html/#whats-built-in).
+T> HTML is built in ([`experiments.html`](/configuration/experiments/#experimentshtml), experimental), so `html-loader` is not listed here. It stays [documented](/loaders/html-loader) for what the built-in support does not cover — see [What's built-in](/guides/native-html/#whats-built-in). Template engines always keep their loader.
-- [`html-loader`](/loaders/html-loader) Exports HTML as string, require references to static resources ([built-in alternative](/guides/native-html/#whats-built-in))
- [`pug-loader`](https://github.com/pugjs/pug-loader) Loads Pug and Jade templates and returns a function
- [`markdown-loader`](https://github.com/peerigon/markdown-loader) Compiles Markdown to HTML
- [`react-markdown-loader`](https://github.com/javiercf/react-markdown-loader) Compiles Markdown to a React Component using the markdown-parse parser
@@ -64,10 +63,8 @@ T> Webpack has experimental built-in HTML support ([`experiments.html`](/configu
## Styling
-T> Webpack has experimental built-in CSS support ([`experiments.css`](/configuration/experiments/#experimentscss)) that covers the common setup. It does not replace preprocessors, and a few loader options have no equivalent — see [What's built-in](/guides/native-css/#whats-built-in).
+T> CSS is built in ([`experiments.css`](/configuration/experiments/#experimentscss), experimental), so [`css-loader`](/loaders/css-loader) and [`style-loader`](/loaders/style-loader) are not listed here. Both stay documented for the options that have no built-in equivalent — see [What's built-in](/guides/native-css/#whats-built-in). Preprocessors always keep their loader.
-- [`style-loader`](/loaders/style-loader) Add exports of a module as style to DOM ([built-in alternative](/guides/native-css/#whats-built-in))
-- [`css-loader`](/loaders/css-loader) Loads CSS file with resolved imports and returns CSS code ([built-in alternative](/guides/native-css/#whats-built-in))
- [`css-utility-loader`](https://github.com/SahilKhanWDC/css-utility-loader-webpack-.git) - Automatically parses and translates legacy CSS properties into modern utility classes (Tailwind) at build-time.
- [`less-loader`](/loaders/less-loader) Loads and compiles a LESS file
- [`sass-loader`](/loaders/sass-loader) Loads and compiles a SASS/SCSS file
diff --git a/src/content/plugins/index.mdx b/src/content/plugins/index.mdx
index 5fcde04b90d8..4c28ac26f4af 100644
--- a/src/content/plugins/index.mdx
+++ b/src/content/plugins/index.mdx
@@ -16,33 +16,31 @@ contributors:
Webpack has a rich plugin interface. Most of the features within webpack itself use this plugin interface. This makes webpack **flexible**.
-T> Webpack has experimental built-in CSS and HTML support, so two plugins below have a built-in alternative for the common case — see what each still covers for [CSS](/guides/native-css/#whats-built-in) and [HTML](/guides/native-html/#whats-built-in).
+T> CSS and HTML are built in (experimental), so [`MiniCssExtractPlugin`](/plugins/mini-css-extract-plugin) and [`HtmlWebpackPlugin`](/plugins/html-webpack-plugin) are not listed here. Both stay documented for what the built-in support does not cover — see [CSS](/guides/native-css/#whats-built-in) and [HTML](/guides/native-html/#whats-built-in).
-| Name | Description |
-| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
-| [`BannerPlugin`](/plugins/banner-plugin) | Add a banner to the top of each generated chunk |
-| [`ChunksWebpackPlugin`](/plugins/chunks-webpack-plugin/) | Create HTML files with entrypoints and chunks relations to serve your bundles |
-| [`CompressionWebpackPlugin`](/plugins/compression-webpack-plugin) | Prepare compressed versions of assets to serve them with Content-Encoding |
-| [`ContextReplacementPlugin`](/plugins/context-replacement-plugin) | Override the inferred context of a `require` expression |
-| [`CopyWebpackPlugin`](/plugins/copy-webpack-plugin) | Copies individual files or entire directories to the build directory |
-| [`DefinePlugin`](/plugins/define-plugin) | Allow global constants configured at compile time |
-| [`DllPlugin`](/plugins/dll-plugin) | Split bundles in order to drastically improve build time |
-| [`EnvironmentPlugin`](/plugins/environment-plugin) | Shorthand for using the [`DefinePlugin`](/plugins/define-plugin) on `process.env` keys |
-| [`EslintWebpackPlugin`](/plugins/eslint-webpack-plugin) | A ESLint plugin for webpack |
-| [`HotModuleReplacementPlugin`](/plugins/hot-module-replacement-plugin) | Enable Hot Module Replacement (HMR) |
-| [`HtmlWebpackPlugin`](/plugins/html-webpack-plugin) | Easily create HTML files to serve your bundles ([built-in alternative](/guides/native-html/#whats-built-in)) |
-| [`IgnorePlugin`](/plugins/ignore-plugin) | Exclude certain modules from bundles |
-| [`LimitChunkCountPlugin`](/plugins/limit-chunk-count-plugin) | Set min/max limits for chunking to better control chunking |
-| [`MergeDuplicateChunksPlugin`](/plugins/merge-duplicate-chunks-plugin) | Merge chunks that contain the same modules |
-| [`MinChunkSizePlugin`](/plugins/min-chunk-size-plugin) | Keep chunk size above the specified limit |
-| [`MiniCssExtractPlugin`](/plugins/mini-css-extract-plugin) | Creates a CSS file per JS file which requires CSS ([built-in alternative](/guides/native-css/#whats-built-in)) |
-| [`NoEmitOnErrorsPlugin`](/configuration/optimization/#optimizationemitonerrors) | Skip the emitting phase when there are compilation errors |
-| [`NormalModuleReplacementPlugin`](/plugins/normal-module-replacement-plugin) | Replace resource(s) that matches a regexp |
-| [`ProgressPlugin`](/plugins/progress-plugin) | Report compilation progress |
-| [`ProvidePlugin`](/plugins/provide-plugin) | Use modules without having to use import/require |
-| [`SourceMapDevToolPlugin`](/plugins/source-map-dev-tool-plugin) | Enables a more fine grained control of source maps |
-| [`EvalSourceMapDevToolPlugin`](/plugins/eval-source-map-dev-tool-plugin) | Enables a more fine grained control of eval source maps |
-| [`SvgChunkWebpackPlugin`](/plugins/svg-chunk-webpack-plugin/) | Generate SVG sprites optimized by SVGO based on your entry point dependencies |
-| [`MinimizerPlugin`](/plugins/minimizer-webpack-plugin/) | Uses Terser (or other) to minify the JS/CSS/HTML/JSON/etc in your project |
+| Name | Description |
+| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
+| [`BannerPlugin`](/plugins/banner-plugin) | Add a banner to the top of each generated chunk |
+| [`ChunksWebpackPlugin`](/plugins/chunks-webpack-plugin/) | Create HTML files with entrypoints and chunks relations to serve your bundles |
+| [`CompressionWebpackPlugin`](/plugins/compression-webpack-plugin) | Prepare compressed versions of assets to serve them with Content-Encoding |
+| [`ContextReplacementPlugin`](/plugins/context-replacement-plugin) | Override the inferred context of a `require` expression |
+| [`CopyWebpackPlugin`](/plugins/copy-webpack-plugin) | Copies individual files or entire directories to the build directory |
+| [`DefinePlugin`](/plugins/define-plugin) | Allow global constants configured at compile time |
+| [`DllPlugin`](/plugins/dll-plugin) | Split bundles in order to drastically improve build time |
+| [`EnvironmentPlugin`](/plugins/environment-plugin) | Shorthand for using the [`DefinePlugin`](/plugins/define-plugin) on `process.env` keys |
+| [`EslintWebpackPlugin`](/plugins/eslint-webpack-plugin) | A ESLint plugin for webpack |
+| [`HotModuleReplacementPlugin`](/plugins/hot-module-replacement-plugin) | Enable Hot Module Replacement (HMR) |
+| [`IgnorePlugin`](/plugins/ignore-plugin) | Exclude certain modules from bundles |
+| [`LimitChunkCountPlugin`](/plugins/limit-chunk-count-plugin) | Set min/max limits for chunking to better control chunking |
+| [`MergeDuplicateChunksPlugin`](/plugins/merge-duplicate-chunks-plugin) | Merge chunks that contain the same modules |
+| [`MinChunkSizePlugin`](/plugins/min-chunk-size-plugin) | Keep chunk size above the specified limit |
+| [`NoEmitOnErrorsPlugin`](/configuration/optimization/#optimizationemitonerrors) | Skip the emitting phase when there are compilation errors |
+| [`NormalModuleReplacementPlugin`](/plugins/normal-module-replacement-plugin) | Replace resource(s) that matches a regexp |
+| [`ProgressPlugin`](/plugins/progress-plugin) | Report compilation progress |
+| [`ProvidePlugin`](/plugins/provide-plugin) | Use modules without having to use import/require |
+| [`SourceMapDevToolPlugin`](/plugins/source-map-dev-tool-plugin) | Enables a more fine grained control of source maps |
+| [`EvalSourceMapDevToolPlugin`](/plugins/eval-source-map-dev-tool-plugin) | Enables a more fine grained control of eval source maps |
+| [`SvgChunkWebpackPlugin`](/plugins/svg-chunk-webpack-plugin/) | Generate SVG sprites optimized by SVGO based on your entry point dependencies |
+| [`MinimizerPlugin`](/plugins/minimizer-webpack-plugin/) | Uses Terser (or other) to minify the JS/CSS/HTML/JSON/etc in your project |
For more third-party plugins, see the list from [awesome-webpack](/awesome-webpack/#webpack-plugins).
From bf72c486a3c9f6ed0bcda3f3713b22dd79f899ba Mon Sep 17 00:00:00 2001
From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com>
Date: Sat, 29 Aug 2026 13:51:56 +0000
Subject: [PATCH 2/5] docs: stop pointing readers at the superseded loaders and
plugins
The guide series builds its CSS with the built-in support, so production's
devDependencies listed css-loader and style-loader that nothing installs.
output.mdx sent readers to css-loader's docs for localIdentName, which
webpack has as a generator option. The UseEntry and kebab-case examples
and the awesome-webpack ecosystem list named them where any loader would
do.
---
src/content/api/module-methods.mdx | 2 +-
src/content/awesome-webpack.mdx | 6 ------
src/content/configuration/module.mdx | 4 ++--
src/content/configuration/output.mdx | 2 +-
src/content/contribute/writers-guide.mdx | 2 +-
src/content/guides/production.mdx | 2 --
6 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/src/content/api/module-methods.mdx b/src/content/api/module-methods.mdx
index 6aedd21013b8..61e258f7b989 100644
--- a/src/content/api/module-methods.mdx
+++ b/src/content/api/module-methods.mdx
@@ -187,7 +187,7 @@ T> The same comment works in CSS handled by webpack's [built-in CSS support](/gu
-When [`experiments.html`](/configuration/experiments/#experimentshtml) is enabled, `webpackIgnore` can be placed as an HTML comment immediately before a tag to skip URL resolution for that tag's `src`, `href`, `srcset`, and similar attributes. The tag is left untouched in the emitted HTML. This mirrors the behavior provided by `html-loader`.
+When [`experiments.html`](/configuration/experiments/#experimentshtml) is enabled, `webpackIgnore` can be placed as an HTML comment immediately before a tag to skip URL resolution for that tag's `src`, `href`, `srcset`, and similar attributes. The tag is left untouched in the emitted HTML.
```html
diff --git a/src/content/awesome-webpack.mdx b/src/content/awesome-webpack.mdx
index 65381b4b0886..052e01fa4118 100644
--- a/src/content/awesome-webpack.mdx
+++ b/src/content/awesome-webpack.mdx
@@ -42,7 +42,6 @@ _People passionate about Webpack (In no particular order)_
#### File Type
-- [HTML Loader](https://github.com/webpack/html-loader): HTML loader module for Webpack. -- _Maintainer_: `Webpack Team` [![Github][githubicon]](https://github.com/webpack)
- [Responsive Loader](https://github.com/herrstucki/responsive-loader): Loader for responsive images. -- _Maintainer_: `Jeremy Stucki` [![Github][githubicon]](https://github.com/herrstucki)
- [SVG Url Loader](https://github.com/bhovhannes/svg-url-loader): Loader which loads SVG file as utf-8 encoded Url. -- _Maintainer_: `Hovhannes Babayan` [![Github][githubicon]](https://github.com/bhovhannes)
- [mermaid Loader](https://github.com/popul/mermaid-loader): [mermaid](https://github.com/mermaid-js/mermaid) loader module (diagrams) for Webpack. -- _Maintainer_: `Paul Musso` [![Github][githubicon]](https://github.com/popul)
@@ -71,9 +70,7 @@ _People passionate about Webpack (In no particular order)_
#### Styles
-- [Style Loader](https://github.com/webpack/style-loader): Style loader module for Webpack. -- _Maintainer_: `Webpack Team` [![Github][githubicon]](https://github.com/webpack)
- [PostCSS Loader](https://github.com/webpack/postcss-loader): PostCSS loader for Webpack. -- _Maintainer_: `PostCSS Team` [![Github][githubicon]](https://github.com/postcss) [![Twitter][twittericon]](https://twitter.com/PostCSS)
-- [CSS Loader](https://github.com/webpack/css-loader): CSS loader module for Webpack. -- _Maintainer_: `Webpack Team` [![Github][githubicon]](https://github.com/webpack)
- [SASS Loader](https://github.com/webpack/sass-loader): SASS loader for Webpack. -- _Maintainer_: `Jorik Tangelder` [![Github][githubicon]](https://github.com/jtangelder) [![Twitter][twittericon]](https://twitter.com/jorikdelaporik)
- [Less Loader](https://github.com/webpack/less-loader): Less loader module for Webpack. -- _Maintainer_: `Webpack Team` [![Github][githubicon]](https://github.com/webpack)
- [Stylus Loader](https://github.com/webpack/stylus-loader): A stylus loader for webpack. -- _Maintainer_: `Kyle Robinson Young` [![Github][githubicon]](https://github.com/shama) [![Twitter][twittericon]](https://twitter.com/shamakry)
@@ -129,7 +126,6 @@ _People passionate about Webpack (In no particular order)_
- [Compression Plugin](https://github.com/webpack/compression-webpack-plugin): Prepare assets to serve with Content-Encoding. -- _Maintainer_: `Webpack Team` [![Github][githubicon]](https://github.com/webpack)
- [Offline Plugin](https://github.com/NekR/offline-plugin): Offline plugin (ServiceWorker, AppCache) for Webpack. -- _Maintainer_: `Arthur Stolyar` [![Github][githubicon]](https://github.com/NekR) [![Twitter][twittericon]](https://twitter.com/nekrtemplar)
- [Rewire Plugin](https://github.com/jhnns/rewire-webpack): Dependency injection for Webpack bundles. -- _Maintainer_: `Johannes Ewald` [![Github][githubicon]](https://github.com/jhnns) [![Twitter][twittericon]](https://twitter.com/Jhnnns)
-- [HTML Webpack Plugin](https://github.com/ampedandwired/html-webpack-plugin): Simplifies creation of HTML files. -- _Maintainer_: `Jan Nicklas` [![Github][githubicon]](https://github.com/jantimon) [![Twitter][twittericon]](https://twitter.com/jantimon)
- [Copy Webpack Plugin](https://github.com/webpack/copy-webpack-plugin): Copy files and directories in webpack. -- _Maintainer_: `Len Boyette` [![Github][githubicon]](https://github.com/kevlened) [![Twitter][twittericon]](https://twitter.com/kevlened)
- [Split By Path](https://github.com/BohdanTkachenko/webpack-split-by-path): Split By Path Webpack Plugin. -- _Maintainer_: `Bohdan Tkachenko` [![Github][githubicon]](https://github.com/BohdanTkachenko) [![Twitter][twittericon]](https://twitter.com/bohdantkachenko)
- [SW Precache](https://github.com/goldhand/sw-precache-webpack-plugin) - Generates a service worker to precache bundle. -- _Maintainer_: `Will Farley` [![Github][githubicon]](https://github.com/goldhand)
@@ -155,8 +151,6 @@ _People passionate about Webpack (In no particular order)_
- [CSS Cleanup Webpack Plugin](https://github.com/do-web/css-cleanup-webpack-plugin) - A plugin to remove duplicated and unused css rules -- _Maintainer_: `Dominik Weber` [![Github][githubicon]](https://github.com/do-web)
- [Extension Reloader](https://github.com/rubenspgcavalcante/webpack-extension-reloader) - Hot reloading while developing browser extensions -- _Maintainer_: `Rubens P. G. Cavalcante` [![Github][githubicon]](https://github.com/rubenspgcavalcante) [![Twitter][twittericon]](https://twitter.com/rubenspgc)
- [Htmls Webpack Plugin](https://github.com/zaaack/htmls-webpack-plugin): Simple and fast multiple-htmls-generating plugin for webpack. -- _Maintainer_: `Zack Young` [![Github][githubicon]](https://github.com/zaaack) [![Twitter][twittericon]](https://twitter.com/ZaaackYoung)
-- [Mini css extract plugin](https://github.com/webpack/mini-css-extract-plugin):
- Lightweight CSS extraction plugin -- _Maintainer_: `Webpack Contrib` [![Github][githubicon]](https://github.com/webpack-contrib)
- [build-hash-webpack-plugin](https://github.com/Cosium/build-hash-webpack-plugin) For each build, Webpack generates an in-memory hash allowing to know if two build outputs are the same or not. This plugin writes the described build hash in a separate json file. -- _Maintainer_: `Réda Housni Alaoui` [![Github][githubicon]](https://github.com/reda-alaoui) [![Twitter][twittericon]](https://twitter.com/alaouirda)
- [webpack-hook-plugin](https://github.com/tienne/webpack-hook-plugin) - run any shell commands before or after webpack builds -- _Maintainer_: `David Kwon` [![Github][githubicon]](https://github.com/tienne)
- [Dynamic Vendor Webpack Plugin](https://github.com/bios21/dynamic-vendor-webpack-plugin) - Gives you a way to import vendors with dynamic variable and specific code splitting. -- _Maintainer_ `Lilian Saget-Lethias` [![Github][githubicon]](https://github.com/bios21) [![Twitter][twittericon]](https://twitter.com/lsagetlethias)
diff --git a/src/content/configuration/module.mdx b/src/content/configuration/module.mdx
index 92a8994b4f52..222483d48cac 100644
--- a/src/content/configuration/module.mdx
+++ b/src/content/configuration/module.mdx
@@ -2783,9 +2783,9 @@ export default {
module: {
rules: [
{
- loader: "css-loader",
+ loader: "sass-loader",
options: {
- modules: true,
+ sourceMap: true,
},
},
],
diff --git a/src/content/configuration/output.mdx b/src/content/configuration/output.mdx
index 2b203c3db1e9..8e18044fbee4 100644
--- a/src/content/configuration/output.mdx
+++ b/src/content/configuration/output.mdx
@@ -712,7 +712,7 @@ With [`experiments.futureDefaults`](/configuration/experiments/#experimentsfutur
The length of hashes (`[hash]`, `[contenthash]` or `[chunkhash]`) can be specified using `[hash:16]` (defaults to 20). Alternatively, specify [`output.hashDigestLength`](#outputhashdigestlength) to configure the length globally.
-Since webpack 5.108.0, the hash digest encoding can also be set inline as `[::]`, for example `[contenthash:base64:8]`. The digest defaults to [`output.hashDigest`](#outputhashdigest) (`hex`), and the same form works in CSS module [`localIdentName`](/loaders/css-loader/#localidentname) placeholders.
+Since webpack 5.108.0, the hash digest encoding can also be set inline as `[::]`, for example `[contenthash:base64:8]`. The digest defaults to [`output.hashDigest`](#outputhashdigest) (`hex`), and the same form works in CSS module [`localIdentName`](/configuration/module/#modulegenerator) placeholders.
It is possible to filter out placeholder replacement when you want to use one of the placeholders in the actual file name. For example, to output a file `[name].js`, you have to escape the `[name]` placeholder by adding backslashes between the brackets. So that `[\name\]` generates `[name]` instead of getting replaced with the `name` of the asset.
diff --git a/src/content/contribute/writers-guide.mdx b/src/content/contribute/writers-guide.mdx
index 04581943be3d..fb46216eb938 100644
--- a/src/content/contribute/writers-guide.mdx
+++ b/src/content/contribute/writers-guide.mdx
@@ -52,7 +52,7 @@ Note that `related` will generate a **Further Reading** section at the bottom of
## Typesetting
- Webpack can be written with a capital W at the beginning of a sentence. ([source](https://github.com/webpack/media#name))
-- loaders are enclosed in backticks and [kebab-cased](https://en.wikipedia.org/w/index.php?title=Kebab_case): `css-loader`, `ts-loader`, …
+- loaders are enclosed in backticks and [kebab-cased](https://en.wikipedia.org/w/index.php?title=Kebab_case): `sass-loader`, `ts-loader`, …
- plugins are enclosed in backticks and [camel-cased](https://en.wikipedia.org/wiki/Camel_case): `BannerPlugin`, `NpmInstallWebpackPlugin`, …
- Use "webpack 2" to refer to a specific webpack version (~~"webpack v2"~~)
- Use ES5; ES2015, ES2016, … to refer to the ECMAScript standards (~~ES6~~, ~~ES7~~)
diff --git a/src/content/guides/production.mdx b/src/content/guides/production.mdx
index 12f7fac7e455..729395a9441a 100644
--- a/src/content/guides/production.mdx
+++ b/src/content/guides/production.mdx
@@ -144,10 +144,8 @@ Now, let's modify our npm scripts to use the new configuration files. For the `s
"author": "",
"license": "ISC",
"devDependencies": {
- "css-loader": "^7.1.3",
"csv-loader": "^3.0.5",
"express": "^5.2.1",
- "style-loader": "^4.0.0",
"webpack": "^5.105.0",
"webpack-cli": "^7.0.0",
"webpack-dev-middleware": "^8.0.3",
From 64f53a1ed5af2bdfe7dee9b4d67a2fee0030a6b2 Mon Sep 17 00:00:00 2001
From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com>
Date: Sat, 29 Aug 2026 14:44:18 +0000
Subject: [PATCH 3/5] build: use webpack's built-in CSS instead of css-loader
and MiniCssExtractPlugin
The site documents native CSS but did not use it. The rule keeps
postcss-loader for Tailwind and hands the result to webpack via
type: css/auto; output.cssFilename reproduces the plugin's names.
Verified against the previous config: 382 emitted files and 188 pages
both ways, the vendor stylesheet byte-identical (97fc31c3662cb803), and
index.css differing by two bytes because webpack quotes the @import url.
The stray stylesheet the SSG pass emits drops from 48.6 KB to 177 B.
---
package-lock.json | 148 ---------------------------------------------
package.json | 2 -
webpack.common.mjs | 13 ++--
3 files changed, 7 insertions(+), 156 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9a2b6520e8b3..0b9b136ec8d4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -46,7 +46,6 @@
"autoprefixer": "^10.5.4",
"babel-loader": "^10.1.1",
"copy-webpack-plugin": "^14.0.0",
- "css-loader": "^7.1.4",
"css-minimizer-webpack-plugin": "^8.0.0",
"cypress": "^15.21.1",
"directory-tree": "^3.6.0",
@@ -71,7 +70,6 @@
"lodash": "^4.18.1",
"markdownlint-cli": "^0.49.1",
"mdast-util-to-string": "^4.0.0",
- "mini-css-extract-plugin": "^2.10.2",
"mkdirp": "^3.0.1",
"npm-run-all": "^4.1.5",
"postcss": "^8.5.26",
@@ -16858,55 +16856,6 @@
"hyphenate-style-name": "^1.0.3"
}
},
- "node_modules/css-loader": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz",
- "integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "icss-utils": "^5.1.0",
- "postcss": "^8.4.40",
- "postcss-modules-extract-imports": "^3.1.0",
- "postcss-modules-local-by-default": "^4.0.5",
- "postcss-modules-scope": "^3.2.0",
- "postcss-modules-values": "^4.0.0",
- "postcss-value-parser": "^4.2.0",
- "semver": "^7.6.3"
- },
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0",
- "webpack": "^5.27.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
- }
- },
- "node_modules/css-loader/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/css-minimizer-webpack-plugin": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-8.0.0.tgz",
@@ -21428,19 +21377,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/icss-utils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
- "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
"node_modules/idb": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
@@ -27247,27 +27183,6 @@
"dom-walk": "^0.1.0"
}
},
- "node_modules/mini-css-extract-plugin": {
- "version": "2.10.2",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz",
- "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "schema-utils": "^4.0.0",
- "tapable": "^2.2.1"
- },
- "engines": {
- "node": ">= 12.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.0.0"
- }
- },
"node_modules/minimatch": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
@@ -29200,69 +29115,6 @@
"postcss": "^8.5.13"
}
},
- "node_modules/postcss-modules-extract-imports": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
- "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-local-by-default": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz",
- "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "icss-utils": "^5.0.0",
- "postcss-selector-parser": "^7.0.0",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-scope": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
- "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "postcss-selector-parser": "^7.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-values": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
- "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "icss-utils": "^5.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
"node_modules/postcss-normalize-charset": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.3.tgz",
diff --git a/package.json b/package.json
index f092c8e24151..2d31b6366e3a 100644
--- a/package.json
+++ b/package.json
@@ -117,7 +117,6 @@
"autoprefixer": "^10.5.4",
"babel-loader": "^10.1.1",
"copy-webpack-plugin": "^14.0.0",
- "css-loader": "^7.1.4",
"css-minimizer-webpack-plugin": "^8.0.0",
"cypress": "^15.21.1",
"directory-tree": "^3.6.0",
@@ -142,7 +141,6 @@
"lodash": "^4.18.1",
"markdownlint-cli": "^0.49.1",
"mdast-util-to-string": "^4.0.0",
- "mini-css-extract-plugin": "^2.10.2",
"mkdirp": "^3.0.1",
"npm-run-all": "^4.1.5",
"postcss": "^8.5.26",
diff --git a/webpack.common.mjs b/webpack.common.mjs
index 0e71fb7393fa..165ba17ff32a 100644
--- a/webpack.common.mjs
+++ b/webpack.common.mjs
@@ -3,7 +3,6 @@ import path from "node:path";
import { fileURLToPath } from "node:url";
// eslint-disable-next-line import/no-extraneous-dependencies
import { h as hastscript } from "hastscript";
-import MiniCssExtractPlugin from "mini-css-extract-plugin";
import autolink from "remark-autolink-headings";
import remarkEmoji from "remark-emoji";
import frontmatter from "remark-frontmatter";
@@ -94,7 +93,8 @@ export default ({ ssg = false }) => ({
},
{
test: /\.css$/,
- use: [MiniCssExtractPlugin.loader, "css-loader", "postcss-loader"],
+ use: ["postcss-loader"],
+ type: "css/auto",
},
{
test: /\.woff2?$/,
@@ -129,19 +129,20 @@ export default ({ ssg = false }) => ({
],
},
plugins: [
- new MiniCssExtractPlugin({
- filename: "[name].[contenthash].css",
- experimentalUseImportModule: true,
- }),
new webpack.DefinePlugin({
// https://github.com/algolia/algoliasearch-client-javascript/issues/764
"process.env.RESET_APP_DATA_TIMER": JSON.stringify(""), // fix for algoliasearch
}),
],
+ experiments: {
+ css: true,
+ },
output: {
path: path.resolve(__dirname, "./dist"),
publicPath: "/",
filename: "[name].bundle.js",
+ cssFilename: "[name].[contenthash].css",
+ cssChunkFilename: "[name].[contenthash].css",
hashFunction: "xxhash64",
},
});
From b6c8769f409501574e2777e9a3d39e5dbabc786e Mon Sep 17 00:00:00 2001
From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com>
Date: Sat, 29 Aug 2026 16:24:28 +0000
Subject: [PATCH 4/5] build: minify CSS with webpack instead of
css-minimizer-webpack-plugin
webpack minifies CSS itself and deliberately steps aside when another
minimizer claims those assets, so the plugin was displacing it. Dropping
it is a gzip win on both stylesheets: vendor 5939 -> 5884 B and the main
sheet 13181 -> 13130 B, 106 B less over the wire.
The ssg pass replaced the default minimizers rather than extending them,
so its server bundle was never minified and the stylesheet it emits is
unreferenced; it now says minimize: false instead.
All 188 pages stay byte-identical and the emitted file list is unchanged.
---
package-lock.json | 762 ----------------------------------------------
package.json | 1 -
webpack.prod.mjs | 2 -
webpack.ssg.mjs | 9 +-
4 files changed, 3 insertions(+), 771 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 0b9b136ec8d4..737a220f796f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -46,7 +46,6 @@
"autoprefixer": "^10.5.4",
"babel-loader": "^10.1.1",
"copy-webpack-plugin": "^14.0.0",
- "css-minimizer-webpack-plugin": "^8.0.0",
"cypress": "^15.21.1",
"directory-tree": "^3.6.0",
"directory-tree-webpack-plugin": "^1.0.3",
@@ -5230,13 +5229,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@colordx/core": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.6.0.tgz",
- "integrity": "sha512-EDlcg/Hmlj1WuFh/Os9YhA+A2aasB2XlgwFfGePUDuW7fVHC07HBi5AFIMx0Ct1eM8kHM9NRyOtZ0MuVYa8xvg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@csstools/color-helpers": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
@@ -16834,19 +16826,6 @@
"node": "*"
}
},
- "node_modules/css-declaration-sorter": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz",
- "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^14 || ^16 || >=18"
- },
- "peerDependencies": {
- "postcss": "^8.0.9"
- }
- },
"node_modules/css-in-js-utils": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
@@ -16856,51 +16835,6 @@
"hyphenate-style-name": "^1.0.3"
}
},
- "node_modules/css-minimizer-webpack-plugin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-8.0.0.tgz",
- "integrity": "sha512-9bEpzHs8gEq6/cbEj418jXL/YWjBUD2YTLLk905Npt2JODqnRITin0+So5Vx4Dp5vyi2Lpt9pp2QHzQ7fdxNrw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.25",
- "cssnano": "^7.0.4",
- "jest-worker": "^30.0.5",
- "postcss": "^8.4.40",
- "schema-utils": "^4.2.0",
- "serialize-javascript": "^7.0.3"
- },
- "engines": {
- "node": ">= 20.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "@parcel/css": {
- "optional": true
- },
- "@swc/css": {
- "optional": true
- },
- "clean-css": {
- "optional": true
- },
- "csso": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- }
- }
- },
"node_modules/css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -16966,85 +16900,6 @@
"node": ">=4"
}
},
- "node_modules/cssnano": {
- "version": "7.1.9",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.9.tgz",
- "integrity": "sha512-uPR75+5Dk/WJ/YSPR1/YDHdwMM9c5FsaARljfKWgeCKLKOtJ0we21xy/RcCjn53fZnD/f6yYEIZ8pu18+GnbNQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssnano-preset-default": "^7.0.17",
- "lilconfig": "^3.1.3"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/cssnano"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/cssnano-preset-default": {
- "version": "7.0.17",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.17.tgz",
- "integrity": "sha512-11qO63A+czwguQFJCaTdICvbaxn0pJzz/XghLlv+OT7WyToDxAMR0Xb3/26/l0y0hQJywwNbj/SLSQlGBHE1OA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.2",
- "css-declaration-sorter": "^7.2.0",
- "cssnano-utils": "^5.0.3",
- "postcss-calc": "^10.1.1",
- "postcss-colormin": "^7.0.10",
- "postcss-convert-values": "^7.0.12",
- "postcss-discard-comments": "^7.0.8",
- "postcss-discard-duplicates": "^7.0.4",
- "postcss-discard-empty": "^7.0.3",
- "postcss-discard-overridden": "^7.0.3",
- "postcss-merge-longhand": "^7.0.7",
- "postcss-merge-rules": "^7.0.11",
- "postcss-minify-font-values": "^7.0.3",
- "postcss-minify-gradients": "^7.0.5",
- "postcss-minify-params": "^7.0.9",
- "postcss-minify-selectors": "^7.1.2",
- "postcss-normalize-charset": "^7.0.3",
- "postcss-normalize-display-values": "^7.0.3",
- "postcss-normalize-positions": "^7.0.4",
- "postcss-normalize-repeat-style": "^7.0.4",
- "postcss-normalize-string": "^7.0.3",
- "postcss-normalize-timing-functions": "^7.0.3",
- "postcss-normalize-unicode": "^7.0.9",
- "postcss-normalize-url": "^7.0.3",
- "postcss-normalize-whitespace": "^7.0.3",
- "postcss-ordered-values": "^7.0.4",
- "postcss-reduce-initial": "^7.0.9",
- "postcss-reduce-transforms": "^7.0.3",
- "postcss-svgo": "^7.1.3",
- "postcss-unique-selectors": "^7.0.7"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/cssnano-utils": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.3.tgz",
- "integrity": "sha512-ynIREMICLxkxm7e9bCR9sh75s4Q5drICi0ua1yxo5jH2XPBqSKkl4dOh4EbFqtUmnTMhRffHgYL0EKKkMjtJTg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
"node_modules/csso": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
@@ -25034,19 +24889,6 @@
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/lilconfig": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
- "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antonk52"
- }
- },
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -28828,114 +28670,6 @@
"node": "^10 || ^12 || >=14"
}
},
- "node_modules/postcss-calc": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz",
- "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^7.0.0",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12 || ^20.9 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.38"
- }
- },
- "node_modules/postcss-colormin": {
- "version": "7.0.10",
- "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.10.tgz",
- "integrity": "sha512-yFr6JezOolHLta/buLE71VKPh2mXursp4saVe98/ol8ZnEWhL+racShqPKlvd/DKWLre/39B6HhcMXf7RZ3hxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@colordx/core": "^5.4.3",
- "browserslist": "^4.28.2",
- "caniuse-api": "^3.0.0",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-convert-values": {
- "version": "7.0.12",
- "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.12.tgz",
- "integrity": "sha512-xurKu5qqk4viR3Cp3p4xBR4KfnZm4w4ys6+UBwBmeuBSNkH7+DtLnYOYnOffgtE4yx8sH9S1VZ6RAAvROXzP2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.2",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-discard-comments": {
- "version": "7.0.8",
- "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.8.tgz",
- "integrity": "sha512-CvvS5S9WrXblFXCEJ9nVo+4z+eA7zSC7Z88V1HEJuwlQhlFnYTIjg1xJY+BCUiG2bvICap2tXii4mP22BD108Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^7.1.1"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-discard-duplicates": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.4.tgz",
- "integrity": "sha512-VBNn1+EuMZkeGVVtz0gRfbNGtx9IFgAsAV+E2pHtXPrp4qfGBkhTIiAuE/wrb+Y6Pakg9NewAlfTpYIFAWODtw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-discard-empty": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.3.tgz",
- "integrity": "sha512-M2pyjQCU+/7cMHVtL6bKTHjv0lZnPLMpicgr67Dlth7AbuV9gjVTtUqaRwn6Pp6BwSDspUzhz8SaUrRykJU5Dw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-discard-overridden": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.3.tgz",
- "integrity": "sha512-aNovXo9UsZuRNLzHJtp13lHIvinDPfiXBPePpXkSjCbgp++iU2FqE+YxvjIsg6EdyPZsASFbfu+JcBFVsErXIQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
"node_modules/postcss-loader": {
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.2.1.tgz",
@@ -29008,305 +28742,6 @@
"node": ">=10"
}
},
- "node_modules/postcss-merge-longhand": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.7.tgz",
- "integrity": "sha512-b3mfYUxR388u5Pt0HPcVIUtUDn/k15UfTY9M+ORW+meCR6JLNxoZffiYvXyOYQoRYQNZyX/UFkMCM/mNHxe1qA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0",
- "stylehacks": "^7.0.11"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-merge-rules": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.11.tgz",
- "integrity": "sha512-SJUPM18g2BmPhf8BVlbwqWz4aK3pLu6u6xjfwEzra7xL6IBR10sUaiB++EzqcVfadPHrKBSMlNdP+XieykhI+Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.2",
- "caniuse-api": "^3.0.0",
- "cssnano-utils": "^5.0.3",
- "postcss-selector-parser": "^7.1.1"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-minify-font-values": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.3.tgz",
- "integrity": "sha512-yilG/VOaNI74IylQvAQQxm3/wZVBkXyYUqNUAdxqwtbWUXPsbK1q8Ms0mL83v+f8YicgcyfYCRZtWACUdYajpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-minify-gradients": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.5.tgz",
- "integrity": "sha512-YraROyQRg3BI1+Hg8E05B/JPdnTm8EDSVu4P2BxdM+CRiOyfmou809+chGIqo6fQqwjPGQ947nbGncSjmTU1WQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@colordx/core": "^5.4.3",
- "cssnano-utils": "^5.0.3",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-minify-params": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.9.tgz",
- "integrity": "sha512-R8itbB8BhlpoYyBm1ou0dD+vJnQ3F6adQipR4UnkCHUwlo+S9WXJaDRg1RHjC8YVAtIdrQzSWvJl40HnGDTKjA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.2",
- "cssnano-utils": "^5.0.3",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-minify-selectors": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.1.2.tgz",
- "integrity": "sha512-aQtrEWKwqafNlExcKHQvPGsXR2+vlUqqJtf5XsCQcgsSb5PL4wlujWBYDJuWsP4UnQX1YHDHU8qRlD+1PzTQ+Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.1",
- "caniuse-api": "^3.0.0",
- "cssesc": "^3.0.0",
- "postcss-selector-parser": "^7.1.1"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-charset": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.3.tgz",
- "integrity": "sha512-NoBfZu8PR4c2NlmjvrqQTzCzLY79hwcSRgNQ3ZiNK0ABzf9kYKloE/jNj+/8GQY1wsm8pRRgANk6ydLH8cwo0Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-display-values": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.3.tgz",
- "integrity": "sha512-ldsCX0QIt05pKIOobZtVQ48wXJecr+czw4+e1/YjVhLMqslShgpVxgPtI2CefURR8oyVoYaU/l829MMwExDMLw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-positions": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.4.tgz",
- "integrity": "sha512-VEvlpeGd3Ju1Hqa/oN4jaP3+ms4laYwkEL9N9u+B6k54PZjXbW1n6wI+aVprf1BQXlCYpS5+1pl/7/vHiKgARg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-repeat-style": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.4.tgz",
- "integrity": "sha512-6mPKlY/8cSaDHxX502wERADarJsccwlky6yIrOapHH2ZgfoKAV94SbiTKfKEs4EEpdazuc3J72WsqeYk7hp9+Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-string": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.3.tgz",
- "integrity": "sha512-HnEQPUchi1eznmDKEYrKUTqrprEq97SrpUYClgUkv7V2zRODD9DFoUsYU+m9ZOetmD5ku7fEMZB/lwy8IT6xVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-timing-functions": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.3.tgz",
- "integrity": "sha512-zmEzHdvpZBZu0OKlbJSfgASQvaayyAoVuWtvyr34IJ/LyS+DaOKvvR3EvFJ9RWWtNIx+CMvO125OVophaxNYew==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-unicode": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.9.tgz",
- "integrity": "sha512-DRAdWfeh/TjmhLJsw91vdiWCnUod9iwvM7xyS02/nF/sLsCR3A8l3pztrSUrWG8DSBqfX7yEk9FM0USaVJ2mSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.2",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-url": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.3.tgz",
- "integrity": "sha512-CL93wmloq5qsffmFv+bw24MIRbmhHrp53qoh1LDAb/5TtjWEXI/np4xcP/Gw9oWCb2XyWnqHYLDUwiKRoJBA1Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-normalize-whitespace": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.3.tgz",
- "integrity": "sha512-FdHjjn+Ht5Z2ZRjNOmeCbNq6lq09sUYKpmlF/Aq0XjVNSLTL6fmHlA/3swN2wP2caY9GV/tjSDcIIyS7aN7W0A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-ordered-values": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.4.tgz",
- "integrity": "sha512-nubSi49hDHQk4E8KIj+IbLY8Bg+8OcSUEhgyolgM+atnOvXjV7EjaR6bac4YGZoFyPa9mWoAF3EaYbWdFkKqVg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssnano-utils": "^5.0.3",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-reduce-initial": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.9.tgz",
- "integrity": "sha512-ztTNPdIxXTxtBcG03E9u8v44M4ElXbMIRT7pf2onlquGula0Y83nKKxqM22FA/hMgkfCjN7ohevkVlaNwI8iOQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.2",
- "caniuse-api": "^3.0.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-reduce-transforms": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.3.tgz",
- "integrity": "sha512-FXsnN9ZwcZTT8Yf8cAHA8qIGUXcX6WfLd9JoYhrdDfmvsVhhfqkkv7m4AC3rwFOfz+GzkUa87OCKF9dUcicd+g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
"node_modules/postcss-scss": {
"version": "4.0.9",
"resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
@@ -29334,186 +28769,6 @@
"postcss": "^8.4.29"
}
},
- "node_modules/postcss-selector-parser": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
- "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-svgo": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.3.tgz",
- "integrity": "sha512-2QfoFOYMcj8lwcVEf9WeTlkVIAm7u2QvOEhMzkQU3KUhhGX/l8hVV9EtjMv4iq3E9iI3OeeMN0YoMLbGusuigw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0",
- "svgo": "^4.0.1"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >= 18"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
- "node_modules/postcss-svgo/node_modules/commander": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
- "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/postcss-svgo/node_modules/css-select": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz",
- "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^7.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.2.2",
- "nth-check": "^2.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/postcss-svgo/node_modules/css-tree": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
- "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.27.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
- }
- },
- "node_modules/postcss-svgo/node_modules/css-what": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz",
- "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/postcss-svgo/node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/postcss-svgo/node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/postcss-svgo/node_modules/domutils": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
- "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/postcss-svgo/node_modules/mdn-data": {
- "version": "2.27.1",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
- "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/postcss-svgo/node_modules/svgo": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz",
- "integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "commander": "^11.1.0",
- "css-select": "^6.0.0",
- "css-tree": "^3.0.1",
- "css-what": "^7.0.0",
- "csso": "^5.0.5",
- "picocolors": "^1.1.1",
- "sax": "1.6.1"
- },
- "bin": {
- "svgo": "bin/svgo.js"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/svgo"
- }
- },
- "node_modules/postcss-unique-selectors": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.7.tgz",
- "integrity": "sha512-d+sCkaRnSefghOUdH8CMJZV9yUQhj2ojpe8Nw/lA+LV1UOfeleGkLTl6XdCFFSai9UJ+DJPb69FFuqthXYsY8w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^7.1.1"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
@@ -33044,23 +32299,6 @@
"inline-style-parser": "0.2.7"
}
},
- "node_modules/stylehacks": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.11.tgz",
- "integrity": "sha512-iODNfhXVLqc5LADs+Y6Oh5wJuK5ZcHbVng8aiK3y9pjMQdc5hLrBW0eFU6FtnpNrE6PoEg/MmFTU4waotj5WNg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.2",
- "postcss-selector-parser": "^7.1.1"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.5.13"
- }
- },
"node_modules/stylis": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz",
diff --git a/package.json b/package.json
index 2d31b6366e3a..7e3e3c9c35ae 100644
--- a/package.json
+++ b/package.json
@@ -117,7 +117,6 @@
"autoprefixer": "^10.5.4",
"babel-loader": "^10.1.1",
"copy-webpack-plugin": "^14.0.0",
- "css-minimizer-webpack-plugin": "^8.0.0",
"cypress": "^15.21.1",
"directory-tree": "^3.6.0",
"directory-tree-webpack-plugin": "^1.0.3",
diff --git a/webpack.prod.mjs b/webpack.prod.mjs
index 212082450dc4..13dfa8b2c0df 100644
--- a/webpack.prod.mjs
+++ b/webpack.prod.mjs
@@ -1,7 +1,6 @@
// Import External Dependencies
import path from "node:path";
import { fileURLToPath } from "node:url";
-import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
import { merge } from "webpack-merge";
import { InjectManifest } from "workbox-webpack-plugin";
@@ -35,7 +34,6 @@ export default (env) =>
},
},
},
- minimizer: ["...", new CssMinimizerPlugin()],
},
plugins: [
new InjectManifest({
diff --git a/webpack.ssg.mjs b/webpack.ssg.mjs
index 7ddf397ca743..cdbff9bff7ec 100644
--- a/webpack.ssg.mjs
+++ b/webpack.ssg.mjs
@@ -3,7 +3,6 @@ import fs from "node:fs";
import path from "node:path";
import { TransformStream } from "node:stream/web";
import CopyWebpackPlugin from "copy-webpack-plugin";
-import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
import RedirectWebpackPlugin from "redirect-webpack-plugin";
import SSGPlugin from "static-site-generator-webpack-plugin";
@@ -38,12 +37,10 @@ export default (env) =>
filename: ".server/[name].[contenthash].js",
libraryTarget: "umd",
},
+ // The server bundle only renders the pages and the stylesheet it emits is
+ // unreferenced, so nothing here is worth minifying.
optimization: {
- minimizer: [
- new CssMinimizerPlugin({
- minify: CssMinimizerPlugin.lightningCssMinify,
- }),
- ],
+ minimize: false,
},
plugins: [
new SSGPlugin({
From 96a2869032e1b6a3a13cd3fa044a66be131642ce Mon Sep 17 00:00:00 2001
From: alexander-akait <4567934+alexander-akait@users.noreply.github.com>
Date: Sun, 30 Aug 2026 15:12:34 +0000
Subject: [PATCH 5/5] build: update webpack to 5.110.2
---
package-lock.json | 8 ++++----
package.json | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 737a220f796f..50d760ef3482 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -93,7 +93,7 @@
"tailwindcss": "^4.2.1",
"tap-spot": "^1.1.2",
"unist-util-visit": "^5.1.0",
- "webpack": "^5.110.0",
+ "webpack": "^5.110.2",
"webpack-bundle-analyzer": "^5.3.2",
"webpack-cli": "^7.2.2",
"webpack-dev-server": "^6.0.0",
@@ -34448,9 +34448,9 @@
}
},
"node_modules/webpack": {
- "version": "5.110.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.110.0.tgz",
- "integrity": "sha512-vzGjrgzXNYRs0MBVkdF288cJt0RIJMxlZy+3pLFo6KIeZI57sBGCgjBp+yNQWf5g9c1us34rjivM1sfNLijQYg==",
+ "version": "5.110.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.110.2.tgz",
+ "integrity": "sha512-TciLrfM7zgEjqGdY851HkirDsSPQgTFsWQpl9oHqMAMYsHhEC0bKjscvjpnz+pzx10hLC8qISApGrsnrCP4UtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
diff --git a/package.json b/package.json
index 7e3e3c9c35ae..f5ceafa7ca1a 100644
--- a/package.json
+++ b/package.json
@@ -164,7 +164,7 @@
"tailwindcss": "^4.2.1",
"tap-spot": "^1.1.2",
"unist-util-visit": "^5.1.0",
- "webpack": "^5.110.0",
+ "webpack": "^5.110.2",
"webpack-bundle-analyzer": "^5.3.2",
"webpack-cli": "^7.2.2",
"webpack-dev-server": "^6.0.0",