Some checks failed
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Lint (ubuntu-latest) (push) Has been cancelled
CI / Lint (windows-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Check (windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Website on push / Deploy Push Playground Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Docs Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Antd Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Element Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Naive Ftp (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
CI / CI OK (push) Has been cancelled
Deploy Website on push / Rerun on failure (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Issue Close Require / close-issues (push) Has been cancelled
Close stale issues / stale (push) Has been cancelled
48 lines
1.8 KiB
TypeScript
48 lines
1.8 KiB
TypeScript
import type { RouteRecordRaw } from 'vue-router';
|
||
|
||
import { mergeRouteModules, traverseTreeValues } from '@vben/utils';
|
||
|
||
import { coreRoutes, fallbackNotFoundRoute } from './core';
|
||
|
||
const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', {
|
||
eager: true,
|
||
});
|
||
|
||
// 有需要可以自行打开注释,并创建文件夹
|
||
// const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true });
|
||
// const staticRouteFiles = import.meta.glob('./static/**/*.ts', { eager: true });
|
||
|
||
/** 动态路由 */
|
||
const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles);
|
||
|
||
/** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统(不会显示在菜单中) */
|
||
// const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles);
|
||
// const staticRoutes: RouteRecordRaw[] = mergeRouteModules(staticRouteFiles);
|
||
const staticRoutes: RouteRecordRaw[] = [];
|
||
const externalRoutes: RouteRecordRaw[] = [];
|
||
|
||
/** 路由列表,由基本路由、外部路由和404兜底路由组成
|
||
* 无需走权限验证(会一直显示在菜单中) */
|
||
const routes: RouteRecordRaw[] = [
|
||
...coreRoutes,
|
||
...externalRoutes,
|
||
fallbackNotFoundRoute,
|
||
];
|
||
|
||
/** 基本路由列表,这些路由不需要进入权限拦截 */
|
||
const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name);
|
||
|
||
/** 有权限校验的路由列表,包含动态路由和静态路由 */
|
||
const accessRoutes = [...dynamicRoutes, ...staticRoutes];
|
||
|
||
const componentKeys: string[] = Object.keys(
|
||
import.meta.glob('../../views/**/*.vue'),
|
||
)
|
||
.filter((item) => !item.includes('/modules/'))
|
||
.map((v) => {
|
||
const path = v.replace('../../views/', '/');
|
||
return path.endsWith('.vue') ? path.slice(0, -4) : path;
|
||
});
|
||
|
||
export { accessRoutes, componentKeys, coreRouteNames, routes };
|