constfs=require('fs')constos=require('os')constvueDir='./src/views/'constrouterFile='./src/router.js'fs.readdir(vueDir,function(err,files){if(err){console.error('❌ Could not list the directory.',err)return}constroutes=[]for(constfilenameoffiles){if(filename.indexOf('.')<0){continue}const[name,ext]=filename.split('.')if(ext!=='vue'){continue}constrouteName=name.replace(/-([a-z])/g,(_,match)=>match.toUpperCase())letrouteDescription=''constcontentFull=fs.readFileSync(`${vueDir}${filename}`,'utf-8')// get route description from first line comment
constmatch=/<!--\s*(.*)\s*-->/g.exec(contentFull.split(os.EOL)[0])if(match){routeDescription=match[1].trim()}routes.push(` {
path: '/${name==='home'?'':name}',
name: '${routeName}',${routeDescription?`\n meta: { description: '${routeDescription}' },`:''} component: () => import(/* webpackChunkName: "${routeName}" */ '@/views/${filename}'),
},`)}constresult=`// This file is automatically generated by gen-router.js, please do not modify it manually!
import VueRouter from 'vue-router'
import Vue from 'vue'
Vue.use(VueRouter)
const routes = [
${routes.join(os.EOL)}]
const router = new VueRouter({
mode: 'hash',
routes,
})
export default router
`fs.writeFile(routerFile,result,'utf-8',(err)=>{if(err)throwerrconsole.log(`✅ Router generated successfully in ${routerFile}`)})})
// This file is automatically generated by gen-router.js, please do not modify it manually!
importVueRouterfrom'vue-router'importVuefrom'vue'Vue.use(VueRouter)constroutes=[{path:'/',name:'home',meta:{description:'Home'},component:()=>import(/* webpackChunkName: "home" */'@/views/home.vue'),},]constrouter=newVueRouter({mode:'hash',routes,})exportdefaultrouter