diff --git a/config/index.js b/config/index.js
index eca13b1..9911967 100644
--- a/config/index.js
+++ b/config/index.js
@@ -1,133 +1,111 @@
import path from "path";
-// const { GenerateSW } = require("workbox-webpack-plugin");
-
const WebpackObfuscator = require("webpack-obfuscator");
+
const config = {
projectName: "cityh5",
-
date: "2023-12-2",
designWidth: 750,
- deviceRatio: {
- 640: 2.34 / 2,
- 750: 1,
- 828: 1.81 / 2,
- },
+ deviceRatio: { 640: 2.34 / 2, 750: 1, 828: 1.81 / 2 },
sourceRoot: "src",
outputRoot: "dist",
plugins: [],
defineConstants: {},
- copy: {
- patterns: [],
- options: {},
- },
+ copy: { patterns: [], options: {} },
framework: "react",
compiler: "webpack5",
+
cache: {
- enable: false, // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache
+ enable: true, // ✅ 开启缓存,加快构建
+ type: "filesystem",
},
h5: {
webpackChain(chain) {
+ // ✅ 避免 undefined.js,统一使用标准占位符
chain.output.filename("static/js/[name].[contenthash:8].js");
chain.output.chunkFilename("static/js/[name].[contenthash:8].js");
- chain
- .plugin("MiniCssExtractPlugin")
- .use(require("mini-css-extract-plugin"), [
- {
- filename: "static/css/[name].[contenthash:8].css",
- chunkFilename: "static/css/[name].[contenthash:8].css",
- },
- ]);
+
+ chain.plugin("MiniCssExtractPlugin").use(require("mini-css-extract-plugin"), [
+ {
+ filename: "static/css/[name].[contenthash:8].css",
+ chunkFilename: "static/css/[name].[contenthash:8].css",
+ },
+ ]);
+
if (process.env.NODE_ENV === "production") {
- // js代码混淆
+ // ✅ 保留原有混淆逻辑
chain.plugin("obfuscator").use(WebpackObfuscator, [
{
rotateStringArray: true,
stringArray: true,
- stringArrayThreshold: 0.5, // 降低比例,提高速度
+ stringArrayThreshold: 0.5,
compact: true,
- controlFlowFlattening: false, // 关闭,提高速度
- deadCodeInjection: false, // 关闭,提高速度
+ controlFlowFlattening: false,
+ deadCodeInjection: false,
debugProtection: false,
disableConsoleOutput: true,
- selfDefending: false, // 关闭,提高速度
- simplify: true, // 开启简化,提高性能
- // 禁用对 async/await 的转换
- target: "browser", // 或设置为适合目标环境的 ECMAScript 版本
- disableOptimizations: true, // 禁用某些优化来避免处理 async/await
+ selfDefending: false,
+ simplify: true,
+ target: "browser",
+ disableOptimizations: true,
},
- ["**/*.js", "!node_modules/**"], // 避免对 node_modules 进行混淆
+ ["**/*.js", "!node_modules/**"],
]);
}
+ // ✅ markdown 支持
chain.module
.rule("markdown")
.test(/\.md$/)
.use("raw-loader")
.loader("raw-loader")
.end();
+
+ // ✅ ico 支持
chain.module
.rule("ico")
.test(/\.ico$/)
.use("file-loader")
.loader("file-loader")
- .options({
- name: "static/images/[name].[ext]",
- });
+ .options({ name: "static/images/[name].[ext]" });
},
esnextModules: ["taro-ui"],
- publicPath: "/",
- // publicPath: `/v${new Date().getTime()}/`,
-
+ publicPath: "/", // ✅ 部署到根目录;如果是子路径,需要改成 /xxx/
staticDirectory: "static",
+
postcss: {
- autoprefixer: {
- enable: true,
- config: {},
- },
+ autoprefixer: { enable: true, config: {} },
cssModules: {
- enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
+ enable: false,
config: {
- namingPattern: "module", // 转换模式,取值为 global/module
+ namingPattern: "module",
generateScopedName: "[name]__[local]___[hash:base64:5]",
},
},
},
router: {
- // basename: '/myapp',
- mode: "browser", // 或者是 'hash'
+ mode: "browser",
customRoutes: {
- // "页面路径": "自定义路由"
"/pages/index/index": "/",
"/pages/book/index": "/book",
- // '/pages/detail/index': ['/detail'], // 可以通过数组为页面配置多个自定义路由
- // "pages/my/index": "/my",
- // "pages/meetup/index": "/meetup",
- // "pages/meetup/Detail/index": "/detail",
},
},
- // defineConstants: {
- // HOST: '"/api"'
- // },
+
devServer: {
- // host: 'nomad.hackrobot.cn', // 替换为您的域名
- // port: 10087, // 选择一个适当的端口号
proxy: {
"/api/": {
- target: JSON.parse('"http://localhost:8700"'), //本地调试端口
- pathRewrite: {
- "^/api/": "/",
- },
+ target: "http://localhost:8700",
+ pathRewrite: { "^/api/": "/" },
changeOrigin: true,
},
},
- // 允许特定域名访问
- allowedHosts: ["nomadro.com", "localhost", ".nomadro.com","hackrobot.cn"], // 允许所有 *.nomadyt.com 子域访问
+ allowedHosts: ["nomadro.com", "localhost", ".nomadro.com", "hackrobot.cn"],
},
+
htmlPluginOption: {
- favicon: path.resolve(__dirname, "..", "src", "images", "dgnomad.png"), // 同样处理 favicon 路径
+ favicon: path.resolve(__dirname, "..", "src", "images", "dgnomad.png"),
meta: {
"cache-control": "no-cache, no-store, must-revalidate",
pragma: "no-cache",
diff --git a/config/indexBack.js b/config/indexBack.js
new file mode 100644
index 0000000..2c2898c
--- /dev/null
+++ b/config/indexBack.js
@@ -0,0 +1,152 @@
+import path from "path";
+// const { GenerateSW } = require("workbox-webpack-plugin");
+
+const WebpackObfuscator = require("webpack-obfuscator");
+const config = {
+ projectName: "cityh5",
+
+ date: "2023-12-2",
+ designWidth: 750,
+ deviceRatio: {
+ 640: 2.34 / 2,
+ 750: 1,
+ 828: 1.81 / 2,
+ },
+ sourceRoot: "src",
+ outputRoot: "dist",
+ plugins: [],
+ defineConstants: {},
+ copy: {
+ patterns: [],
+ options: {},
+ },
+ framework: "react",
+ compiler: "webpack5",
+ cache: {
+ enable: false, // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache
+ },
+
+ h5: {
+ webpackChain(chain) {
+ chain.output.filename("static/js/[name].[contenthash:8].js");
+ chain.output.chunkFilename("static/js/[name].[contenthash:8].js");
+ chain
+ .plugin("MiniCssExtractPlugin")
+ .use(require("mini-css-extract-plugin"), [
+ {
+ filename: "static/css/[name].[contenthash:8].css",
+ chunkFilename: "static/css/[name].[contenthash:8].css",
+ },
+ ]);
+ if (process.env.NODE_ENV === "production") {
+ // js代码混淆
+ chain.plugin("obfuscator").use(WebpackObfuscator, [
+ {
+ rotateStringArray: true,
+ stringArray: true,
+ stringArrayThreshold: 0.5, // 降低比例,提高速度
+ compact: true,
+ controlFlowFlattening: false, // 关闭,提高速度
+ deadCodeInjection: false, // 关闭,提高速度
+ debugProtection: false,
+ disableConsoleOutput: true,
+ selfDefending: false, // 关闭,提高速度
+ simplify: true, // 开启简化,提高性能
+ // 禁用对 async/await 的转换
+ target: "browser", // 或设置为适合目标环境的 ECMAScript 版本
+ disableOptimizations: true, // 禁用某些优化来避免处理 async/await
+ },
+ ["**/*.js", "!node_modules/**"], // 避免对 node_modules 进行混淆
+ ]);
+ }
+
+ chain.module
+ .rule("markdown")
+ .test(/\.md$/)
+ .use("raw-loader")
+ .loader("raw-loader")
+ .end();
+ chain.module
+ .rule("ico")
+ .test(/\.ico$/)
+ .use("file-loader")
+ .loader("file-loader")
+ .options({
+ name: "static/images/[name].[ext]",
+ });
+ },
+
+ esnextModules: ["taro-ui"],
+ publicPath: "/",
+ // publicPath: `/v${new Date().getTime()}/`,
+
+ staticDirectory: "static",
+ postcss: {
+ autoprefixer: {
+ enable: true,
+ config: {},
+ },
+ cssModules: {
+ enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
+ config: {
+ namingPattern: "module", // 转换模式,取值为 global/module
+ generateScopedName: "[name]__[local]___[hash:base64:5]",
+ },
+ },
+ },
+
+ router: {
+ // basename: '/myapp',
+ mode: "browser", // 或者是 'hash'
+ customRoutes: {
+ // "页面路径": "自定义路由"
+ "/pages/index/index": "/",
+ "/pages/book/index": "/book",
+ // '/pages/detail/index': ['/detail'], // 可以通过数组为页面配置多个自定义路由
+ // "pages/my/index": "/my",
+ // "pages/meetup/index": "/meetup",
+ // "pages/meetup/Detail/index": "/detail",
+ },
+ },
+ // defineConstants: {
+ // HOST: '"/api"'
+ // },
+ devServer: {
+ // host: 'nomad.hackrobot.cn', // 替换为您的域名
+ // port: 10087, // 选择一个适当的端口号
+ proxy: {
+ "/api/": {
+ target: JSON.parse('"http://localhost:8700"'), //本地调试端口
+ pathRewrite: {
+ "^/api/": "/",
+ },
+ changeOrigin: true,
+ },
+ },
+ // 允许特定域名访问
+ allowedHosts: [
+ "nomadro.com",
+ "localhost",
+ ".nomadro.com",
+ "hackrobot.cn",
+ ], // 允许所有 *.nomadyt.com 子域访问
+ },
+ htmlPluginOption: {
+ favicon: path.resolve(__dirname, "..", "src", "images", "dgnomad.png"), // 同样处理 favicon 路径
+ meta: {
+ "cache-control": "no-cache, no-store, must-revalidate",
+ pragma: "no-cache",
+ expires: "0",
+ },
+ },
+
+ target: ["web", "browserslist:> 0.25%, not dead"],
+ },
+};
+
+module.exports = function (merge) {
+ if (process.env.NODE_ENV === "development") {
+ return merge({}, config, require("./dev"));
+ }
+ return merge({}, config, require("./prod"));
+};
diff --git a/package.json b/package.json
index f076636..f77387f 100644
--- a/package.json
+++ b/package.json
@@ -63,13 +63,16 @@
"@types/react": "^18.0.0",
"@types/webpack-env": "^1.13.6",
"babel-preset-taro": "3.6.20",
+ "compression-webpack-plugin": "^11.1.0",
"eslint": "^8.12.0",
"eslint-config-taro": "3.6.20",
"eslint-plugin-import": "^2.12.0",
"eslint-plugin-react": "^7.8.2",
"eslint-plugin-react-hooks": "^1.6.1",
+ "glob": "^11.0.3",
"javascript-obfuscator": "^4.1.1",
"postcss": "^8.4.18",
+ "purgecss-webpack-plugin": "^7.0.2",
"react-refresh": "^0.11.0",
"stylelint": "9.3.0",
"ts-node": "^10.9.1",
diff --git a/src/index.html b/src/index.html
index dbc2531..d3065cc 100644
--- a/src/index.html
+++ b/src/index.html
@@ -5,15 +5,14 @@
-
-
+
+
-
diff --git a/yarn.lock b/yarn.lock
index 709e1e8..6d6038c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4116,6 +4116,11 @@ commander@10.0.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1"
integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==
+commander@^12.1.0:
+ version "12.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
+ integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
+
commander@^2.19.0, commander@^2.20.0, commander@^2.8.1:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
@@ -4153,6 +4158,14 @@ compressible@~2.0.18:
dependencies:
mime-db ">= 1.43.0 < 2"
+compression-webpack-plugin@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz#ee340d2029cf99ccecdea9ad1410b377d15b48b3"
+ integrity sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==
+ dependencies:
+ schema-utils "^4.2.0"
+ serialize-javascript "^6.0.2"
+
compression@^1.7.4:
version "1.8.1"
resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79"
@@ -5124,6 +5137,14 @@ enhanced-resolve@^5.17.2, enhanced-resolve@^5.9.3:
graceful-fs "^4.2.4"
tapable "^2.2.0"
+enhanced-resolve@^5.17.3:
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44"
+ integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
entities@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
@@ -6266,7 +6287,7 @@ for-own@^0.1.4:
dependencies:
for-in "^1.0.1"
-foreground-child@^3.1.0:
+foreground-child@^3.1.0, foreground-child@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f"
integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
@@ -6547,6 +6568,18 @@ glob@10.2.6:
minipass "^5.0.0 || ^6.0.2"
path-scurry "^1.7.0"
+glob@^11.0.0, glob@^11.0.3:
+ version "11.0.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6"
+ integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==
+ dependencies:
+ foreground-child "^3.3.1"
+ jackspeak "^4.1.1"
+ minimatch "^10.0.3"
+ minipass "^7.1.2"
+ package-json-from-dist "^1.0.0"
+ path-scurry "^2.0.0"
+
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
@@ -7898,6 +7931,13 @@ jackspeak@^2.0.3:
optionalDependencies:
"@pkgjs/parseargs" "^0.11.0"
+jackspeak@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae"
+ integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+
jake@^10.8.5:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f"
@@ -8531,6 +8571,11 @@ lru-cache@^10.2.0:
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
+lru-cache@^11.0.0:
+ version "11.2.2"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.2.tgz#40fd37edffcfae4b2940379c0722dc6eeaa75f24"
+ integrity sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==
+
lru-cache@^4.1.2:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@@ -8923,7 +8968,7 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimatch@*:
+minimatch@*, minimatch@^10.0.3:
version "10.0.3"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa"
integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==
@@ -8992,7 +9037,7 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81"
integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
@@ -9639,6 +9684,11 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+package-json-from-dist@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
+ integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
+
package-json@^6.3.0, package-json@^6.5.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
@@ -9809,6 +9859,14 @@ path-scurry@^1.7.0:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+path-scurry@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580"
+ integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==
+ dependencies:
+ lru-cache "^11.0.0"
+ minipass "^7.1.2"
+
path-to-regexp@0.1.12:
version "0.1.12"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
@@ -10242,7 +10300,7 @@ postcss-selector-parser@^3.1.0:
indexes-of "^1.0.1"
uniq "^1.0.1"
-postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
+postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.2:
version "6.1.2"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
@@ -10325,7 +10383,7 @@ postcss@^7.0.1, postcss@^7.0.23, postcss@^7.0.32, postcss@^7.0.36:
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.18, postcss@^8.4.33, postcss@^8.5.6:
+postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.18, postcss@^8.4.33, postcss@^8.4.47, postcss@^8.5.6:
version "8.5.6"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
@@ -10476,6 +10534,24 @@ pupa@^2.1.1:
dependencies:
escape-goat "^2.0.0"
+purgecss-webpack-plugin@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/purgecss-webpack-plugin/-/purgecss-webpack-plugin-7.0.2.tgz#76e7591ac1fac8d10538ad1659df586dae23d588"
+ integrity sha512-YKN93Ndg/T/FsJaUL7KJdFBh/kfGi3pH7sm1OmVbhzb11mmS+vbRAQ5UIvqUd70kQrJ57+ZpPkDtRv66d89q9A==
+ dependencies:
+ purgecss "^7.0.2"
+ webpack ">=5.95.0"
+
+purgecss@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-7.0.2.tgz#b7dccc3ead65a4301eed98e014793719a511c633"
+ integrity sha512-4Ku8KoxNhOWi9X1XJ73XY5fv+I+hhTRedKpGs/2gaBKU8ijUiIKF/uyyIyh7Wo713bELSICF5/NswjcuOqYouQ==
+ dependencies:
+ commander "^12.1.0"
+ glob "^11.0.0"
+ postcss "^8.4.47"
+ postcss-selector-parser "^6.1.2"
+
qs@6.13.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
@@ -13191,6 +13267,37 @@ webpack-virtual-modules@^0.5.0:
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c"
integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==
+webpack@>=5.95.0:
+ version "5.101.3"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.101.3.tgz#3633b2375bb29ea4b06ffb1902734d977bc44346"
+ integrity sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==
+ dependencies:
+ "@types/eslint-scope" "^3.7.7"
+ "@types/estree" "^1.0.8"
+ "@types/json-schema" "^7.0.15"
+ "@webassemblyjs/ast" "^1.14.1"
+ "@webassemblyjs/wasm-edit" "^1.14.1"
+ "@webassemblyjs/wasm-parser" "^1.14.1"
+ acorn "^8.15.0"
+ acorn-import-phases "^1.0.3"
+ browserslist "^4.24.0"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^5.17.3"
+ es-module-lexer "^1.2.1"
+ eslint-scope "5.1.1"
+ events "^3.2.0"
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.2.11"
+ json-parse-even-better-errors "^2.3.1"
+ loader-runner "^4.2.0"
+ mime-types "^2.1.27"
+ neo-async "^2.6.2"
+ schema-utils "^4.3.2"
+ tapable "^2.1.1"
+ terser-webpack-plugin "^5.3.11"
+ watchpack "^2.4.1"
+ webpack-sources "^3.3.3"
+
webpack@^5.78.0:
version "5.100.2"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.100.2.tgz#e2341facf9f7de1d702147c91bcb65b693adf9e8"