UNPKG

@vitjs/vit

Version:

🛠 React application framework inspired by UmiJS.

51 lines (50 loc) • 2.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const path_1 = require("path"); const utils_1 = require("@vitjs/utils"); const mustache_1 = __importDefault(require("mustache")); const utils_2 = require("./utils"); function generateRoutes(service) { const routesTpl = (0, fs_1.readFileSync)((0, path_1.resolve)(__dirname, './routes.tpl'), 'utf-8'); let moduleMap = {}; if (!service.route.dynamicImport) { moduleMap = service.route.resolveRoutes(); } const modules = Object.keys(moduleMap).map((modulePath) => { return { name: moduleMap[modulePath], path: modulePath, }; }); const iconsMap = (0, utils_2.resolveIcons)(service.route.routes); service.writeTmpFile({ path: 'routes.ts', content: mustache_1.default.render(routesTpl, { routes: service.route.dumpRoutes({ extraReplace: (route) => { if (route.icon && iconsMap[route.icon]) { route.icon = `React.createElement(${iconsMap[route.icon]})`; } }, postDump: (content) => content.replace(/\"icon\": (\"(.+?)\")/g, (global, m1, m2) => { return `"icon": ${m2.replace(/\^/g, '"')}`; }), }), imports: Object.values(iconsMap) .map((icon) => { return `import ${icon} from '@ant-design/icons/${icon}'`; }) .join('\n'), dynamic: !!service.route.dynamicImport, modules, loadingComponent: service.route.dynamicImport && service.route.dynamicImport.loading && (0, utils_1.winPath)((0, path_1.resolve)(process.cwd(), './src/', service.route.dynamicImport.loading)), }), }); } exports.default = generateRoutes;