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