diff --git a/src/pages/demos.page.vue b/src/pages/demos.page.vue
new file mode 100644
index 0000000..b1b44b0
--- /dev/null
+++ b/src/pages/demos.page.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/src/pages/demos/create.page.vue b/src/pages/demos/create.page.vue
index d35867d..a3ee7b3 100644
--- a/src/pages/demos/create.page.vue
+++ b/src/pages/demos/create.page.vue
@@ -8,5 +8,5 @@ definePage({
-
+ create.page.vue
diff --git a/src/plugins/00.router-plugin.ts b/src/plugins/00.router-plugin.ts
index 14bd122..8f82f26 100644
--- a/src/plugins/00.router-plugin.ts
+++ b/src/plugins/00.router-plugin.ts
@@ -1,14 +1,13 @@
import { DataLoaderPlugin } from 'unplugin-vue-router/data-loaders';
-import { setupLayouts } from 'virtual:meta-layouts';
-// import { createGetRoutes, setupLayouts } from 'virtual:generated-layouts';
+// import { setupLayouts } from 'virtual:meta-layouts';
import { createRouter, createWebHistory } from 'vue-router';
import type { Router } from 'vue-router';
import { handleHotUpdate, routes } from 'vue-router/auto-routes';
-const setupLayoutsResult = setupLayouts(routes);
+// const setupLayoutsResult = setupLayouts(routes);
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
- routes: /* routes ?? */ setupLayoutsResult,
+ routes: routes /* ?? setupLayoutsResult */,
scrollBehavior: (_to, _from, savedPosition) => {
return savedPosition ?? { left: 0, top: 0 };
},
@@ -50,6 +49,11 @@ export function install({ app }: { app: import('vue').App
}) {
// <<<
}
+export function createGetRoutes(router: Router) {
+ const routes = router.getRoutes();
+ return () => routes.filter((route) => !route.meta.isLayout);
+}
+
if (__DEV__) Object.assign(window, { router });
// This will update routes at runtime without reloading the page
@@ -57,4 +61,4 @@ if (import.meta.hot) {
handleHotUpdate(router);
}
-export { router, setupLayoutsResult };
+export { router };
diff --git a/tsconfig.app.json b/tsconfig.app.json
index b117cb5..c8f7f55 100644
--- a/tsconfig.app.json
+++ b/tsconfig.app.json
@@ -17,5 +17,11 @@
"@/*": ["./src/*"],
"~/*": ["./src/*"]
}
+ },
+ "vueCompilerOptions": {
+ "plugins": [
+ "unplugin-vue-router/volar/sfc-route-blocks",
+ "unplugin-vue-router/volar/sfc-typed-router"
+ ]
}
}
diff --git a/typed-router.d.ts b/typed-router.d.ts
index d4c68df..f826a71 100644
--- a/typed-router.d.ts
+++ b/typed-router.d.ts
@@ -28,6 +28,28 @@ declare module 'vue-router/auto-routes' {
'/',
Record,
Record,
+ | 'RootA'
+ | 'RootB'
+ >,
+ 'RootA': RouteRecordInfo<
+ 'RootA',
+ '/a',
+ Record,
+ Record,
+ | never
+ >,
+ 'RootB': RouteRecordInfo<
+ 'RootB',
+ '/b',
+ Record,
+ Record,
+ | never
+ >,
+ 'RootC': RouteRecordInfo<
+ 'RootC',
+ '/c',
+ Record,
+ Record,
| never
>,
'$Path': RouteRecordInfo<
@@ -37,6 +59,20 @@ declare module 'vue-router/auto-routes' {
{ path: ParamValue },
| never
>,
+ 'DemosParent': RouteRecordInfo<
+ 'DemosParent',
+ '/demos',
+ Record,
+ Record,
+ | 'Demos'
+ | 'DemosApiDemo'
+ | 'DemosCounterDemo'
+ | 'DemosCreate'
+ | 'DemosI18nDemo'
+ | 'DemosNaiveUiDemo'
+ | 'DemosPrimevueDemo'
+ | 'DemosWebsocketDemo'
+ >,
'Demos': RouteRecordInfo<
'Demos',
'/demos',
@@ -120,9 +156,29 @@ declare module 'vue-router/auto-routes' {
* @internal
*/
export interface _RouteFileInfoMap {
- 'src/pages/index.page.vue': {
+ 'src/pages-with-layout/(layout-group).page.vue': {
routes:
| 'Root'
+ | 'RootA'
+ | 'RootB'
+ views:
+ | 'default'
+ }
+ 'src/pages-with-layout/(layout-group)/a.page.vue': {
+ routes:
+ | 'RootA'
+ views:
+ | never
+ }
+ 'src/pages-with-layout/(layout-group)/b.page.vue': {
+ routes:
+ | 'RootB'
+ views:
+ | never
+ }
+ 'src/pages/(ccc)/c.page.vue': {
+ routes:
+ | 'RootC'
views:
| never
}
@@ -132,6 +188,20 @@ declare module 'vue-router/auto-routes' {
views:
| never
}
+ 'src/pages/demos.page.vue': {
+ routes:
+ | 'Demos'
+ | 'DemosApiDemo'
+ | 'DemosCounterDemo'
+ | 'DemosCreate'
+ | 'DemosI18nDemo'
+ | 'DemosNaiveUiDemo'
+ | 'DemosParent'
+ | 'DemosPrimevueDemo'
+ | 'DemosWebsocketDemo'
+ views:
+ | 'default'
+ }
'src/pages/demos/index.page.vue': {
routes:
| 'Demos'
diff --git a/vite-plugins/00.vue-macros.ts b/vite-plugins/00.vue-macros.ts
index 4a592c8..0b45545 100644
--- a/vite-plugins/00.vue-macros.ts
+++ b/vite-plugins/00.vue-macros.ts
@@ -1,5 +1,6 @@
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
+import consola from 'consola';
import { getPascalCaseRouteName } from 'unplugin-vue-router';
import vueRouter from 'unplugin-vue-router/vite';
import type { PluginOption } from 'vite';
@@ -18,8 +19,13 @@ export default [
exclude: ['**/__*', '**/__*/**/*'],
extensions: ['.page.vue', '.page.md'],
getRouteName: (routeNode) => getPascalCaseRouteName(routeNode),
- logs: false,
- routesFolder: 'src/pages',
+ logs: true,
+ routesFolder: ['src/pages', 'src/pages-with-layout'],
+ extendRoute(route) {
+ consola.info(`route.name :>> `, route.name);
+ console.debug(`route.meta :>> `, route.meta);
+ console.debug(`route.path :>> `, route.path);
+ },
}),
},
}),
diff --git a/vite-plugins/01.vite-plugin-vue-meta-layouts.ts b/vite-plugins/01.vite-plugin-vue-meta-layouts.X.ts
similarity index 100%
rename from vite-plugins/01.vite-plugin-vue-meta-layouts.ts
rename to vite-plugins/01.vite-plugin-vue-meta-layouts.X.ts
diff --git a/vite-plugins/_loadPlugins.ts b/vite-plugins/_loadPlugins.ts
index 8b10dda..462ada0 100644
--- a/vite-plugins/_loadPlugins.ts
+++ b/vite-plugins/_loadPlugins.ts
@@ -17,6 +17,8 @@ export async function loadPlugins(configEnv: ConfigEnv): Promise
ignore: [
'**/*.d.ts',
'**/*.disabled.ts',
+ '**/*.x.ts',
+ '**/*.X.ts',
'**/x-*.ts', // 禁用以 x- 开头的插件文件
'**/_*',
],
diff --git a/vite.config.ts b/vite.config.ts
index 4f7bad4..7c96f2e 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -3,7 +3,7 @@ import { createViteProxy } from 'utils4u/vite';
import { defineConfig, loadEnv } from 'vite';
import { loadPlugins } from './vite-plugins/_loadPlugins';
import { optimizeDeps } from './vite.config.optimizeDeps';
-import { viteConfigRollupOptions } from './vite.config.rollup';
+// import { viteConfigRollupOptions } from './vite.config.rollup';
import consola from 'consola';
// https://vite.dev/config/
@@ -24,7 +24,7 @@ export default defineConfig(async (configEnv) => {
build: {
minify: env.VITE_BUILD_MINIFY === 'true' ? undefined /* 即默认 */ : false, // 默认: 'terser'
sourcemap: env.VITE_BUILD_SOURCE_MAP === 'true',
- rollupOptions: viteConfigRollupOptions,
+ // rollupOptions: viteConfigRollupOptions,
},
css: {
devSourcemap: true,