@lee1586/vite-plugin-auto-routes
Version:
A Vite plugin to auto-generate route configurations based on directory structure.
3 lines (2 loc) • 1.46 kB
JavaScript
import e from"fs";import r from"path";function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n,o;var i=t(function(){if(o)return n;o=1;const t=e,i=r;function s(e,r){return t.readdirSync(e).flatMap(n=>{const o=i.resolve(e,n),a=i.relative(r,o);if(t.statSync(o).isDirectory())return s(o,r);if(n.endsWith(".vue")){const e=a.replace(/\\/g,"/").replace(/\.vue$/,"").replace(/\/index$/,"").replace(/\/_/g,"/:").split("/").filter(Boolean);e.length>1&&e[e.length-1]===e[e.length-2]&&e.pop();const r="/"+e.join("/").toLowerCase(),n=o.replace(".vue",".meta.js"),i=t.existsSync(n)?function(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}(n):{};return[`{\n path: "${r}",\n component: () => import("${o.replace(/^.*?(\/src\/views\/.*\.vue)$/,"$1")}")${Object.keys(i).length?",":""}\n ${Object.entries(i).map(([e,r])=>`${e}: ${JSON.stringify(r)}`).join(",\n")}\n }`]}return[]})}return n=function(e={}){const{pagesDir:r="src/views",routesFile:n="src/router/autoRoutes.js"}=e;return{name:"vite-plugin-auto-routes",configResolved(e){const o=i.resolve(e.root,r),a=`\n export const routes = [\n ${s(o,o).join(",\n")}\n ];\n `;t.writeFileSync(i.resolve(e.root,n),a)}}}}());export{i as default};
//# sourceMappingURL=index.esm.js.map