From f299889c4a045b0bd2ed004cb73bdabff5acb7a7 Mon Sep 17 00:00:00 2001 From: liqiang <1206709430@qq.com> Date: Sat, 1 Feb 2025 23:29:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81npm=20=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E7=9A=84@great-dream=E6=8F=92=E4=BB=B6=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/router/backEnd.ts | 7 +++++-- web/src/views/plugins/index.ts | 11 ++++++++++- web/vite.config.ts | 1 + 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/web/src/router/backEnd.ts b/web/src/router/backEnd.ts index a12db74..0128046 100644 --- a/web/src/router/backEnd.ts +++ b/web/src/router/backEnd.ts @@ -21,13 +21,14 @@ const menuApi = useMenuApi(); const layouModules: any = import.meta.glob('../layout/routerView/*.{vue,tsx}'); const viewsModules: any = import.meta.glob('../views/**/*.{vue,tsx}'); +const greatDream: any = import.meta.glob('@great-dream/**/*.{vue,tsx}'); /** * 获取目录下的 .vue、.tsx 全部文件 * @method import.meta.glob * @link 参考:https://cn.vitejs.dev/guide/features.html#json */ -const dynamicViewsModules: Record = Object.assign({}, { ...layouModules }, { ...viewsModules }); +const dynamicViewsModules: Record = Object.assign({}, { ...layouModules }, { ...viewsModules }, { ...greatDream }); /** * 后端控制路由:初始化方法,防止刷新时路由丢失 @@ -198,7 +199,9 @@ export function dynamicImport(dynamicViewsModules: Record, com const keys = Object.keys(dynamicViewsModules); const matchKeys = keys.filter((key) => { const k = key.replace(/..\/views|../, ''); - return k.startsWith(`${component}`) || k.startsWith(`/${component}`); + const k1 = k.replace("ode_modules/@great-dream/", '') + const newComponent = component.replace("plugins/", "") + return k1.startsWith(`${newComponent}`) || k1.startsWith(`/${newComponent}`); }); if (matchKeys?.length === 1) { const matchKey = matchKeys[0]; diff --git a/web/src/views/plugins/index.ts b/web/src/views/plugins/index.ts index 7ba8bf9..e678075 100644 --- a/web/src/views/plugins/index.ts +++ b/web/src/views/plugins/index.ts @@ -2,7 +2,7 @@ import { defineAsyncComponent, AsyncComponentLoader } from 'vue'; export let pluginsAll: any = []; // 扫描插件目录并注册插件 export const scanAndInstallPlugins = (app: any) => { - const components = import.meta.glob('./**/*.vue'); + const components = import.meta.glob('./**/*.ts'); const pluginNames = new Set(); // 遍历对象并注册异步组件 for (const [key, value] of Object.entries(components)) { @@ -11,6 +11,15 @@ export const scanAndInstallPlugins = (app: any) => { const pluginsName = key.match(/\/([^\/]*)\//)?.[1]; pluginNames.add(pluginsName); } + const dreamComponents = import.meta.glob('/node_modules/@great-dream/**/*.ts'); + // 遍历对象并注册异步组件 + for (let [key, value] of Object.entries(dreamComponents)) { + key = key.replace('node_modules/@great-dream/', ''); + const name = key.slice(key.lastIndexOf('/') + 1, key.lastIndexOf('.')); + app.component(name, defineAsyncComponent(value as AsyncComponentLoader)); + const pluginsName = key.match(/\/([^\/]*)\//)?.[1]; + pluginNames.add(pluginsName); + } pluginsAll = Array.from(pluginNames); console.log('已发现插件:', pluginsAll); }; diff --git a/web/vite.config.ts b/web/vite.config.ts index 51ffc73..d6ebf26 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -11,6 +11,7 @@ const pathResolve = (dir: string) => { const alias: Record = { '/@': pathResolve('./src/'), + '@great-dream': pathResolve('./node_modules/@great-dream/'), '@views': pathResolve('./src/views'), 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', '@dvaformflow':pathResolve('./src/viwes/plugins/dvaadmin_form_flow/src/')