UNPKG

@lorcan-store/vue-auto-router

Version:

A Vite plugin for auto-generating Vue router configuration with smart naming conventions and custom templates

141 lines (111 loc) 4.78 kB
# @lorcan-store/vue-auto-router A Vite plugin for automatically generating Vue router configuration based on file structure. [English](README.md) | [简体中文](README.zh-CN.md) ## Features - 🚀 Auto-scan Vue files in specified directory - 📁 Generate route configuration based on file structure - ⚙️ Support custom scan and output directories - 🔍 Support file exclusion configuration - 🔄 Support hot update in development - 📦 Support latest versions of Vite and Vue Router - 🎯 Generate route files named by directory ## Installation ```bash npm install @lorcan-store/vue-auto-router -D # or yarn add @lorcan-store/vue-auto-router -D # or pnpm add @lorcan-store/vue-auto-router -D ``` ## Usage Configure in `vite.config.ts`: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import VueAutoRouter from '@lorcan-store/vue-auto-router' export default defineConfig({ plugins: [ vue(), VueAutoRouter({ // Configuration options scanDir: 'src/pages', // Directory to scan outputDir: 'src/router/', // Output directory exclude: ['layout'], // Directories to exclude layoutPath: '@/pages/layout/index.vue', // Layout component path forceOverwrite: ['home'], // Directories to force overwrite language: 'EN' // Console output language (EN or CN) }) ] }) ``` ## Configuration Options | Option | Type | Default | Description | |--------|------|---------|-------------| | scanDir | string | 'src/pages' | Root directory to scan | | outputDir | string | 'src/router/' | Output directory for route files | | exclude | string[] | [] | Directory names to exclude | | layoutPath | string | '@/pages/layout/index.vue' | Layout component path | | forceOverwrite | string[] | [] | Directory names to force overwrite | | routeTemplate | string | undefined | Custom route template file path | | language | 'EN' \| 'CN' | 'EN' | Console output language | ## Directory Structure Example ``` src/ pages/ # scanDir points here layout/ # Layout component directory (usually excluded) index.vue # Layout component home/ # Home module (generates home.ts) index.vue # Home page about.vue # About page user_manager/ # User management module (generates user_manager.ts) index.vue # List page form.vue # Form page ``` ## Route Generation Rules 1. **File Import Rules** - Vue files are converted to dynamic imports - Component names use PascalCase - Import paths are converted to @ alias form - Example: * house-build.vue -> const HouseBuild * user_profile.vue -> const UserProfile * data_analysis-chart.vue -> const DataAnalysisChart 2. **Route Path Rules** - Paths use lowercase directory names, keeping original separators - index.vue maps to empty path - Other file names are used as sub-paths - Example: * /pages/user-center/index.vue -> path: '' * /pages/user-center/user-info.vue -> path: 'user-info' * /pages/data_analysis/data_chart.vue -> path: 'data_chart' 3. **Route Name Rules** - Uses directory name in PascalCase - Sub-routes append file name in PascalCase - Example: * user-center/index.vue -> name: 'UserCenter' * user-center/user-info.vue -> name: 'UserCenterUserInfo' * data_analysis/data_chart.vue -> name: 'DataAnalysisDataChart' ## Custom Route Template You can specify a custom route template file: > 💡 Tip: You can find the complete template example in the [GitHub repository](https://github.com/lorcan-cloud/vue-auto-router/blob/master/template/route-template.js). The template file should export a function that receives three parameters: 1. dirName: string - Current directory name 2. files: string[] - Vue file paths in the directory 3. context: Object - Additional context information For more details and examples, check the template file in the repository. ## Notes 1. Make sure you have the latest version of `vue-router` installed 2. Layout component is expected at `src/pages/layout/index.vue` by default 3. Route files are generated in the specified output directory 4. Each directory generates a separate route file 5. Existing route files won't be overwritten unless in forceOverwrite list 6. After deleting existing route files, restart the server to regenerate ## Development Environment The plugin will check and generate route configuration in these cases: 1. When development server starts 2. When adding new .vue files 3. When deleting .vue files 4. When modifying .vue files 5. When building starts ## License [MIT](https://github.com/lorcan-cloud/vue-auto-router/blob/master/LICENSE)