import fs from 'fs-extra'; import lodash from 'lodash'; import path from 'path'; import { RouteConfig } from 'vue-router'; const pageTemplate = fs.readFileSync(path.resolve(__dirname, 'template', 'pages.md')).toString(); const pagesPath = path.join(process.cwd(), 'plugins', 'pages.ts') export function extendRoutes(routes: Array, resolve) { try { if (!fs.existsSync(pagesPath)) { fs.ensureFileSync(pagesPath) } const home = lodash.find(routes, ['name', 'index']); if (home) { home.path = '/' } // 删除 非 page 生成的路由 lodash.remove(routes, route => /[\\/](view|views|children)[\\/]|\.(ts)/.test(route.component)); let pagesStr = fs.readFileSync(pagesPath).toString(); const PagesEnum = lodash.map(lodash.orderBy(routes, 'name', 'asc'), ({ name, chunkName }) => { return ` /** ${chunkName} */ \n ${lodash.capitalize(lodash.snakeCase(name))}:{name:'${name}'}` }).join(',\r\n') const scriptStr = lodash.template(pageTemplate)({ PagesEnum: `{\r\n${PagesEnum}\r\n}` }) if (lodash.eq(pagesStr, scriptStr)) { return } fs.writeFileSync(pagesPath, scriptStr) } catch (error) { console.log("🚀 ~ file: nuxt.config.js ~ line 153 ~ extendRoutes ~ error", error) } }