From b9e6556409a755655bf7f769ad1c340d33c66c59 Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Tue, 5 Dec 2023 18:04:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A0=B9=E6=B2=BB=E9=9D=9E=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84`vue-router`=E5=8A=A8=E6=80=81=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E8=AD=A6=E5=91=8A`No=20match=20found=20for=20location?= =?UTF-8?q?=20with=20path`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/plugins.ts | 33 ++++++++++++++++++++------------- package.json | 1 + pnpm-lock.yaml | 9 +++++++++ 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/build/plugins.ts b/build/plugins.ts index 18056ae0d..a0eedc61f 100644 --- a/build/plugins.ts +++ b/build/plugins.ts @@ -6,6 +6,7 @@ import svgLoader from "vite-svg-loader"; import type { PluginOption } from "vite"; import vueJsx from "@vitejs/plugin-vue-jsx"; import { configCompressPlugin } from "./compress"; +import removeNoMatch from "vite-plugin-router-warn"; import { visualizer } from "rollup-plugin-visualizer"; import removeConsole from "vite-plugin-remove-console"; import { themePreprocessorPlugin } from "@pureadmin/theme"; @@ -20,18 +21,27 @@ export function getPluginsList( const lifecycle = process.env.npm_lifecycle_event; return [ vue(), + // jsx、tsx语法支持 + vueJsx(), VueI18nPlugin({ runtimeOnly: true, compositionOnly: true, include: [resolve("locales/**")] }), - // jsx、tsx语法支持 - vueJsx(), - VITE_CDN ? cdn : null, - configCompressPlugin(VITE_COMPRESSION), - // 线上环境删除console - removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }), viteBuildInfo(), + /** + * 开发环境下移除非必要的vue-router动态路由警告No match found for location with path + * 非必要具体看 https://github.com/vuejs/router/issues/521 和 https://github.com/vuejs/router/issues/359 + * vite-plugin-router-warn只在开发环境下启用,只处理vue-router文件并且只在服务启动或重启时运行一次,性能消耗可忽略不计 + */ + removeNoMatch(), + // mock支持 + vitePluginFakeServer({ + logger: false, + include: "mock", + infixName: false, + enableProd: true + }), // 自定义主题 themePreprocessorPlugin({ scss: { @@ -41,13 +51,10 @@ export function getPluginsList( }), // svg组件化支持 svgLoader(), - // mock支持 - vitePluginFakeServer({ - logger: false, - include: "mock", - infixName: false, - enableProd: true - }), + VITE_CDN ? cdn : null, + configCompressPlugin(VITE_COMPRESSION), + // 线上环境删除console + removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }), // 打包分析 lifecycle === "report" ? visualizer({ open: true, brotliSize: true, filename: "report.html" }) diff --git a/package.json b/package.json index 95f67535f..10d87cdd1 100644 --- a/package.json +++ b/package.json @@ -157,6 +157,7 @@ "vite-plugin-compression": "^0.5.1", "vite-plugin-fake-server": "^2.0.0", "vite-plugin-remove-console": "^2.1.1", + "vite-plugin-router-warn": "^1.0.0", "vite-svg-loader": "^4.0.0", "vue-eslint-parser": "^9.3.2", "vue-tsc": "^1.8.22" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cd991fc28..9f3c6bc4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -328,6 +328,9 @@ devDependencies: vite-plugin-remove-console: specifier: ^2.1.1 version: 2.1.1 + vite-plugin-router-warn: + specifier: ^1.0.0 + version: registry.npmjs.org/vite-plugin-router-warn@1.0.0 vite-svg-loader: specifier: ^4.0.0 version: 4.0.0 @@ -9305,3 +9308,9 @@ packages: dependencies: tslib: 2.3.0 dev: false + + registry.npmjs.org/vite-plugin-router-warn@1.0.0: + resolution: {integrity: sha512-jnr7faHJPkKxukBXVpg7Ui1UDqhmxD7xU6JGidq8ivSHTsNAPqzSpPpwW8O1PBP/0+Owq4bLfNNk11drOkz4xA==, registry: https://registry.npmmirror.com/, tarball: https://registry.npmjs.org/vite-plugin-router-warn/-/vite-plugin-router-warn-1.0.0.tgz} + name: vite-plugin-router-warn + version: 1.0.0 + dev: true