feat: 重构插件初始化逻辑,简化应用启动流程并添加调试工具支持
All checks were successful
/ build-and-deploy-to-vercel (push) Successful in 1m19s
/ depcheck (push) Successful in 1m31s
/ playwright (push) Successful in 1m14s

This commit is contained in:
严浩
2025-01-08 09:35:21 +08:00
parent be321165c8
commit b70da8aad4
3 changed files with 30 additions and 27 deletions

View File

@ -1,19 +1,6 @@
import './styles';
import App from './App.vue';
import { setupPlugins } from './plugins';
async function init() {
const app = createApp(App);
{
// https://github.com/antfu-collective/vitesse/blob/47618e72dfba76c77b9b85b94784d739e35c492b/src/modules/README.md
type UserPluginContext = { app: import('vue').App<Element> };
type UserPlugin = (ctx: UserPluginContext) => void;
Object.values(import.meta.glob<{ install: UserPlugin }>('./plugins/*.ts', { eager: true })).forEach((i) =>
i.install?.({ app }),
);
}
app.mount('#app');
}
init();
setupPlugins(createApp(App)).mount('#app');

View File

@ -16,4 +16,17 @@ export function install({ app }: { app: import('vue').App<Element> }) {
// 2. 显示全局错误提示
// 3. 进行错误分析和处理
};
if (import.meta.env.MODE === 'development' && '1' === ('2' as never)) {
// TODO: https://github.com/hu3dao/vite-plugin-debug/
// https://eruda.liriliri.io/zh/docs/#快速上手
import('eruda').then(({ default: eruda }) => {
eruda.init({
defaults: {
transparency: 0.9,
},
});
/* eruda.show(); */
});
}
}

View File

@ -1,14 +1,17 @@
export function install() {
if (import.meta.env.MODE === 'development' && '1' === ('2' as never)) {
// TODO: https://github.com/hu3dao/vite-plugin-debug/
// https://eruda.liriliri.io/zh/docs/#快速上手
import('eruda').then(({ default: eruda }) => {
eruda.init({
defaults: {
transparency: 0.9,
},
});
/* eruda.show(); */
});
// https://github.com/antfu-collective/vitesse/blob/47618e72dfba76c77b9b85b94784d739e35c492b/src/modules/README.md
type UserPluginContext = { app: import('vue').App<Element> };
type UserPlugin = (ctx: UserPluginContext) => void;
export function setupPlugins(app: import('vue').App) {
console.group('Setup Plugins');
const modules = import.meta.glob<{ install: UserPlugin }>('./*.ts', { eager: true });
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');
}
}
console.groupEnd();
return app;
}