0.1.13 • Published 8 months ago

unplugin-vue-router-extend v0.1.13

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

unplugin-vue-router-extend

NPM version

  • Automatically generate component's name based on route.name.
  • Support getNuxtStyleRouteName method to generate NuxtJs-style route name
declare module 'vue-router/auto/routes' {
  export interface RouteNamedMap {
    'index': RouteRecordInfo<'index', '/', Record<never, never>, Record<never, never>>
    'all': RouteRecordInfo<'all', '/:all(.*)', { all: ParamValue<true> }, { all: ParamValue<false> }>
    'sensor': RouteRecordInfo<'sensor', '/:sensor', { sensor: ParamValue<true> }, { sensor: ParamValue<false> }>
    'sensor-current': RouteRecordInfo<'sensor-current', '/:sensor/current', { sensor: ParamValue<true> }, { sensor: ParamValue<false> }>
    'about/': RouteRecordInfo<'about/', '/about', Record<never, never>, Record<never, never>>
    'about': RouteRecordInfo<'about', '/about', Record<never, never>, Record<never, never>>
    'about-user-id': RouteRecordInfo<'about-user-id', '/about/:id', { id: ParamValue<true> }, { id: ParamValue<false> }>
    'about-id-more': RouteRecordInfo<'about-id-more', '/about/:id/more', { id: ParamValue<true> }, { id: ParamValue<false> }>
    'about-id-nested': RouteRecordInfo<'about-id-nested', '/about/:id/nested', { id: ParamValue<true> }, { id: ParamValue<false> }>
    'blog': RouteRecordInfo<'blog', '/blog', Record<never, never>, Record<never, never>>
    'blog-id': RouteRecordInfo<'blog-id', '/blog/:id2', { id2: ParamValue<true> }, { id2: ParamValue<false> }>
    'blog-today': RouteRecordInfo<'blog-today', '/blog/today', Record<never, never>, Record<never, never>>
    'blog-today-all': RouteRecordInfo<'blog-today-all', '/blog/today/:all(.*)', { all: ParamValue<true> }, { all: ParamValue<false> }>
    'components': RouteRecordInfo<'components', '/components', Record<never, never>, Record<never, never>>
  }
}

Install

npm i unplugin-vue-router-extend
// vite.config.ts
// import { getPascalCaseRouteName } from 'unplugin-vue-router'
import VueRouter from 'unplugin-vue-router/vite'
import VueRouterExtend from 'unplugin-vue-router-extend/vite'
import { getNuxtStyleRouteName } from 'unplugin-vue-router-extend'

const routeMap = new Map()
export default defineConfig({
  plugins: [
    /** */
    VueRouter({
      getRouteName: (node: any) => {
        if (!routeMap.size) {
          for (const [key, value] of node.parent?.map)
            routeMap.set(key, value)
        }
        return getNuxtStyleRouteName(node)
      },
    }),
    VueRouterExtend({
      routeMap,
    }),
  ],
})

Example: playground/

// rollup.config.js
import VueRouter from 'unplugin-vue-router/vite'
import VueRouterExtend from 'unplugin-vue-router-extend/vite'
import { getNuxtStyleRouteName } from 'unplugin-vue-router-extend'

const routeMap = new Map()
export default {
  plugins: [
    /* ... */
    VueRouter({
      getRouteName: (node: any) => {
        if (!routeMap.size) {
          for (const [key, value] of node.parent?.map)
            routeMap.set(key, value)
        }
        return getNuxtStyleRouteName(node)
      },
    }),
    VueRouterExtend({
      routeMap,
    }),
  ],
}

// webpack.config.js
import { getNuxtStyleRouteName } from 'unplugin-vue-router-extend'

const routeMap = new Map()
module.exports = {
  /* ... */
  plugins: [
    require('unplugin-vue-router/webpack')({
      getRouteName: (node: any) => {
        if (!routeMap.size) {
          for (const [key, value] of node.parent?.map)
            routeMap.set(key, value)
        }
        return getNuxtStyleRouteName(node)
      },
    }),
    require('unplugin-vue-router-extend/webpack')({
      routeMap
    })
  ]
}

// nuxt.config.js
import VueRouter from 'unplugin-vue-router/vite'
import { getNuxtStyleRouteName } from 'unplugin-vue-router-extend'

const routeMap = new Map()
export default {
  buildModules: [
    /* ... */
    ['unplugin-vue-router/nuxt', {
      getRouteName: (node: any) => {
        if (!routeMap.size) {
          for (const [key, value] of node.parent?.map)
            routeMap.set(key, value)
        }
        return getNuxtStyleRouteName(node)
      },
    }],
    ['unplugin-vue-router-extend/nuxt', {
      routeMap
    }],
  ],
}

This module works for both Nuxt 2 and Nuxt Vite

0.1.13

8 months ago

0.1.11

1 year ago

0.1.12

1 year ago

0.1.7

1 year ago

0.1.9

1 year ago

0.1.6

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago