UNPKG

@uiw-admin/plugins

Version:
100 lines (98 loc) 2.91 kB
import _extends from "@babel/runtime/helpers/extends"; import path from 'path'; import fs from 'fs'; export * from './babel'; export * from './rematch'; // 判断 路由的 component 路径指向是文件还是目录 如果是文件则去除最后一项 变成目录 // 拼接项目 path.resolve(process.cwd(), 'src') 地址 进行判断数据 // 最后生成 一个路由映射 model 文件 路径 的json文件 /** * @description 生成的映射json文件格式 * { * path:[ * {name:"",path:"....path"} * ] * } * */ /** 把数组扁平化 */ export var getRoutesList = function getRoutesList(data, list) { if (data === void 0) { data = []; } if (list === void 0) { list = []; } data.forEach(item => { if (item.routes) { getRoutesList(item.routes, list); } else { var { component } = item; // item if (typeof component === 'string' && !['404', '500', '403', '*'].includes(component)) { // 地址拼接 var pathStr = component.replace(/^@/, ''); // 判断 地址是文件还是目录 var newPath = path.join(process.cwd(), 'src', pathStr); if (fs.existsSync(newPath)) { var stats = fs.statSync(newPath); if (stats && stats.isFile()) { var pathArr = newPath.split('/'); pathArr.pop(); newPath = pathArr.join('/'); } } list.push(_extends({}, item, { component: newPath })); } } }); return list; }; export var getRouteMapModels = (routes, modelsData) => { var routeModels = {}; var newRoutes = getRoutesList(routes); var rootPath = path.join(process.cwd(), 'src'); var rootPathModels = modelsData.filter(item => rootPath === item.location).map(ites => ({ path: "" + ites.srcPath, name: ites.name })); routeModels['/'] = rootPathModels || []; newRoutes.forEach(item => { var { path, component } = item; var modelsArr = modelsData.filter(ite => ite.location === component).map(ites => ({ path: "" + ites.srcPath, name: ites.name })); if (path && modelsArr) { if (routeModels[path]) { routeModels[path].push(...modelsArr); } else { routeModels[path] = modelsArr; } } else if (path) { routeModels[path] = []; } }); return routeModels; }; /** 转 首字母大写 */ export var getToUpperCase = valus => { return valus.split('-').map(str => str.replace(/^\S/, s => s.toUpperCase())).join(''); }; export var getJsonToString = (key, value) => { if (key === 'component' && ['403', '404', '500'].includes(value)) { return "<Exceptions" + value + " />"; } else if (key === 'icon') { var Com = getToUpperCase(value); return "<" + Com + " />"; } else if (key === 'component') { return "React.lazy(() => import('" + value + "'))"; } return value; };