diff --git a/build/plugins.ts b/build/plugins.ts index 151668e..1cbd6a2 100644 --- a/build/plugins.ts +++ b/build/plugins.ts @@ -6,11 +6,13 @@ import WindiCSS from "vite-plugin-windicss"; import { viteMockServe } from "vite-plugin-mock"; import liveReload from "vite-plugin-live-reload"; import ElementPlus from "unplugin-element-plus/vite"; +import { visualizer } from "rollup-plugin-visualizer"; import removeConsole from "vite-plugin-remove-console"; import themePreprocessorPlugin from "@zougt/vite-plugin-theme-preprocessor"; export function getPluginsList(command, VITE_LEGACY) { const prodMock = true; + const lifecycle = process.env.npm_lifecycle_event; return [ vue(), // jsx、tsx语法支持 @@ -97,6 +99,10 @@ export function getPluginsList(command, VITE_LEGACY) { targets: ["ie >= 11"], additionalLegacyPolyfills: ["regenerator-runtime/runtime"] }) + : null, + // 打包分析 + lifecycle === "report" + ? visualizer({ open: true, brotliSize: true, filename: "report.html" }) : null ]; } diff --git a/package.json b/package.json index c9753c2..b245e38 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "dev": "cross-env --max_old_space_size=4096 vite", "serve": "pnpm dev", "build": "rimraf dist && cross-env vite build", + "report": "rimraf dist && cross-env vite build", "preview": "vite preview", "preview:build": "pnpm build && vite preview", "clean:cache": "rm -rf node_modules && rm -rf .eslintcache && pnpm install", @@ -87,6 +88,7 @@ "prettier": "2.3.2", "pretty-quick": "3.1.1", "rimraf": "3.0.2", + "rollup-plugin-visualizer": "^5.5.4", "sass": "^1.49.0", "sass-loader": "^12.4.0", "stylelint": "13.13.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4fdf28..560dbf7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,6 +54,7 @@ specifiers: responsive-storage: ^1.0.11 rgb-hex: ^4.0.0 rimraf: 3.0.2 + rollup-plugin-visualizer: ^5.5.4 sass: ^1.49.0 sass-loader: ^12.4.0 stylelint: 13.13.1 @@ -136,6 +137,7 @@ devDependencies: prettier: 2.3.2 pretty-quick: 3.1.1_prettier@2.3.2 rimraf: 3.0.2 + rollup-plugin-visualizer: 5.5.4 sass: 1.49.0 sass-loader: 12.4.0_sass@1.49.0 stylelint: 13.13.1 @@ -2718,6 +2720,14 @@ packages: engines: { node: ">=0.10.0" } dev: true + /define-lazy-prop/2.0.0: + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + } + engines: { node: ">=8" } + dev: true + /diff/4.0.2: resolution: { @@ -4143,6 +4153,15 @@ packages: } dev: true + /is-docker/2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + } + engines: { node: ">=8" } + hasBin: true + dev: true + /is-extglob/2.1.1: resolution: { integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= } engines: { node: ">=0.10.0" } @@ -4259,6 +4278,16 @@ packages: engines: { node: ">=10" } dev: true + /is-wsl/2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + } + engines: { node: ">=8" } + dependencies: + is-docker: 2.2.1 + dev: true + /isexe/2.0.0: resolution: { integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= } dev: true @@ -4998,6 +5027,18 @@ packages: mimic-fn: 2.1.0 dev: true + /open/8.4.0: + resolution: + { + integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + } + engines: { node: ">=12" } + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + /optionator/0.9.1: resolution: { @@ -6128,6 +6169,22 @@ packages: glob: 7.2.0 dev: true + /rollup-plugin-visualizer/5.5.4: + resolution: + { + integrity: sha512-CJQFUuZ75S1daGEkk62UH7lL6UFCoP86Sn/iz4gXBdamdwFeD5nPGCHHXfXCrly/wNgQOYTH7cdcxk4+OG3Xjw== + } + engines: { node: ">=12" } + hasBin: true + peerDependencies: + rollup: ^2.0.0 + dependencies: + nanoid: 3.2.0 + open: 8.4.0 + source-map: 0.7.3 + yargs: 17.3.1 + dev: true + /rollup/2.66.1: resolution: { @@ -6363,6 +6420,14 @@ packages: } engines: { node: ">=0.10.0" } + /source-map/0.7.3: + resolution: + { + integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + } + engines: { node: ">= 8" } + dev: true + /sourcemap-codec/1.4.8: resolution: {