import router from './config/router'; import { RouteRecordRaw } from './utils/router/types'; export type AppSubpackagesRaw = { root: string; pages: string[]; }; export type AppRoutes = { pages: string[]; subpackages: AppSubpackagesRaw[]; tabBarList: any[]; }; /** * 重写路由路径 */ const rewriteRouteUrl = (url = '', fileRoot = '') => { if (fileRoot) { const reg = new RegExp(`/${fileRoot}/`, 'i'); return url.replace(reg, ''); } return url.replace(/\//i, ''); }; /** * 获取小程序路、分包路由配置、tabBar导航配置 * @param routes 小程序路由配置 */ const getRoutes = (routes: RouteRecordRaw[]) => { const appRoutes: AppRoutes = { pages: [], subpackages: [], tabBarList: [] }; return routes.reduce(({ pages, subpackages, tabBarList }, route) => { if (route?.root && Array.isArray(route?.pages)) { const subpkg: any = {}; if (route?.name) subpkg.name = route.name; if (route?.independent) subpkg.independent = route.independent; subpkg.root = route?.root; subpkg.pages = route?.pages.map((item: RouteRecordRaw) => rewriteRouteUrl(item.url, route.root)); subpackages.push(subpkg); } else { pages?.push(rewriteRouteUrl(route.url)); } if (route?.tabBar) { const { iconPath, selectedIconPath } = route?.meta || {}; tabBarList.push({ text: route?.title, pagePath: rewriteRouteUrl(route?.url), iconPath, selectedIconPath, }); } return { pages, subpackages, tabBarList, }; }, appRoutes); }; const { pages, subpackages, tabBarList } = getRoutes(router); export default { pages, subpackages, window: { navigationStyle: 'default', backgroundTextStyle: 'light', navigationBarBackgroundColor: '#fff', navigationBarTitleText: '兑喵喵', navigationBarTextStyle: 'black', }, tabBar: { color: '#333333', selectedColor: '#ff7437', borderStyle: 'white', list: tabBarList, }, sitemapLocation: 'sitemap.json', usingComponents: { iconfont: '/components/iconfont/iconfont', }, };