diff --git a/src/hooks/init/initPlugin.ts b/src/hooks/init/initPlugin.ts index e841ef5..9d21186 100644 --- a/src/hooks/init/initPlugin.ts +++ b/src/hooks/init/initPlugin.ts @@ -4,7 +4,7 @@ import { alertTipType, PluginExportType } from "@/types/type"; const initPlugin = async (globalAlertTip: alertTipType) => { initPluginCenter(globalAlertTip); - const modulesFiles = import.meta.glob("@/plugins/**/export.ts", { eager: true }); + const modulesFiles = import.meta.glob("@/plugins/**/export*.ts", { eager: true }); const pluginCenter = usePluginCenter(); const promiseArray = []; for (let pluginConfig of Object.values(modulesFiles)) { diff --git a/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue b/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue index 2c90111..cea02ec 100644 --- a/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue +++ b/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue @@ -73,6 +73,7 @@ const mainRef = ref() const draggable = ref(true) // 使用ResizeObserver实现 +// 什么?性能问题?这玩意性能问题多着呢,轮不到它。 const clientWidth = ref(666) const name = props.name ?? props.item.name diff --git a/src/plugins/miaoMusicPlayer_mainMenu/export.ts b/src/plugins/miaoMusicPlayer/export_mainMenu.ts similarity index 100% rename from src/plugins/miaoMusicPlayer_mainMenu/export.ts rename to src/plugins/miaoMusicPlayer/export_mainMenu.ts diff --git a/src/plugins/registerExternalPlugin/export.ts b/src/plugins/registerExternalPlugin/export.ts new file mode 100644 index 0000000..f695bbc --- /dev/null +++ b/src/plugins/registerExternalPlugin/export.ts @@ -0,0 +1,29 @@ +import { Plugin, PluginGroup } from "@/class/PluginCenter"; +import { LogoGithub } from "@vicons/ionicons5"; +import { PluginExportType } from "@/types/type"; +import { shallowRef } from "vue"; +import registerExternalPlugin from "./registerExternalPlugin"; + +const pluginConfig: Plugin = { + name: "导入插件", + icon: shallowRef(LogoGithub), + filter: (vDirs, vFiles) => { + if (vDirs.length !== 0) { + return false; + } + if (vFiles.length !== 1) { + return false; + } + return vFiles[0].name.endsWith('js') + }, + disable: false, + group: [PluginGroup.default], + func: registerExternalPlugin, + priority: -1 +}; + +export default pluginConfig; + +export const type = PluginExportType.default; + +export const key = 'registerExternalPlugin'; diff --git a/src/plugins/registerExternalPlugin/registerExternalPlugin.ts b/src/plugins/registerExternalPlugin/registerExternalPlugin.ts new file mode 100644 index 0000000..e53bf3b --- /dev/null +++ b/src/plugins/registerExternalPlugin/registerExternalPlugin.ts @@ -0,0 +1,25 @@ +import VirtualDirectory, { VirtualFile } from "@/class/VirtualDirectory"; +// import useMiaoFetchApi from "@/hooks/useMiaoFetchApi"; +import { PluginExportType, usePluginHooksType } from "@/types/type"; +import type { Plugin, registerComponentOption } from "@/class/PluginCenter"; + +// const miaoFetchApi = useMiaoFetchApi() + +export default async function registerExternalPlugin(_VDirectories: VirtualDirectory[], VFiles: VirtualFile[], hooks: usePluginHooksType) { + const targetPluginVFile = VFiles[0] as VirtualFile + // const pluginU8iArr = await miaoFetchApi.getFile(targetPluginVFile).response + // const pluginText = new TextDecoder().decode(pluginU8iArr) + // const plugin = await import(/* @vite-ignore */'') + const plugin = await import(/* @vite-ignore */ targetPluginVFile.url) as { + default: registerComponentOption | Plugin; + type: PluginExportType; + key?: string; + } + // console.log(plugin) + const pc = hooks.getPluginCenter() + if(plugin.type === PluginExportType.default) { + pc.register(`${Math.random()}`, plugin.default as Plugin) + } else { + pc.registerComponent(plugin.default as registerComponentOption) + } +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index d4673fd..fafe3a7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -19,42 +19,10 @@ export default defineConfig({ }, server: { proxy: { - '/get': { + '^/(get|upload|delete|query|rename|cut|mkdir)': { target: 'http://127.0.0.1:17705', changeOrigin: true, - rewrite: (path) => path.replace(/^\/get/, '/get') - }, - - '/upload': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/upload/, '/upload') - }, - - '/delete': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/delete/, '/delete') - }, - '/query': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/query/, '/query') - }, - '/rename': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/rename/, '/rename') - }, - '/cut': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/cut/, '/cut') - }, - '/mkdir': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/mkdir/, '/mkdir') + rewrite: (path) => path } } },