diff --git a/src/main.ts b/src/main.ts index 9b2109d..2359d43 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,4 +3,5 @@ import './styles'; import App from './App.vue'; import { setupPlugins } from './plugins'; -setupPlugins(createApp(App)).mount('#app'); +const autoInstallModules = import.meta.glob('./plugins/*.ts', { eager: true }); +setupPlugins(createApp(App), autoInstallModules).mount('#app'); diff --git a/src/plugins/index.ts b/src/plugins/index.ts index 6c67653..b4b1e47 100644 --- a/src/plugins/index.ts +++ b/src/plugins/index.ts @@ -1,15 +1,18 @@ // https://github.com/antfu-collective/vitesse/blob/47618e72dfba76c77b9b85b94784d739e35c492b/src/modules/README.md type UserPluginContext = { app: import('vue').App }; type UserPlugin = (ctx: UserPluginContext) => void; +type AutoInstallModule = { install?: UserPlugin; [K: string]: unknown }; -export function setupPlugins(app: import('vue').App) { - console.group('Setup Plugins'); - const modules = import.meta.glob<{ install: UserPlugin }>('./*.ts', { eager: true }); +export function setupPlugins(app: import('vue').App, modules: AutoInstallModule | Record) { + console.group('šŸ”Œ Plugins'); for (const path in modules) { - modules[path].install?.({ app }); - if (modules[path].install !== undefined) { - const moduleName = path.replace(/\.\/(.*)\.ts/, '$1'); - console.debug(`%cāœ” ${moduleName}`, 'color: #07a'); + const module = modules[path] as AutoInstallModule; + if (module.install) { + module.install({ app }); + console.debug(`%cāœ” ${path}`, 'color: #07a'); + } else { + if (typeof module.setupPlugins === 'function') continue; + console.warn(`%c✘ ${path} has no install function`, 'color: #f50'); } } console.groupEnd();