fix(web): generate route-map.d.ts only in development mode (#10583)

This commit is contained in:
Thierry Goettelmann
2026-10-15 10:34:37 +02:00
committed by GitHub
parent 0695c6b44c
commit 3e74189479
3 changed files with 68 additions and 72 deletions

View File

@@ -1,70 +0,0 @@
import type { RouteRecordInfo, ParamValue } from 'vue-router'
declare module 'vue-router' {
interface TypesConfig {
ParamParsers: never
}
}
declare module 'vue-router/auto-routes' {
/**
* Route name map generated by vue-router
*/
export interface RouteNamedMap {
'/dev/': RouteRecordInfo<'/dev/', '/dev', Record<never, never>, Record<never, never>, never>
'/dev/colors': RouteRecordInfo<'/dev/colors', '/dev/colors', Record<never, never>, Record<never, never>, never>
'/dev/icons/': RouteRecordInfo<'/dev/icons/', '/dev/icons', Record<never, never>, Record<never, never>, never>
'/dev/icons/[name]': RouteRecordInfo<
'/dev/icons/[name]',
'/dev/icons/:name',
{ name: ParamValue<true> },
{ name: ParamValue<false> },
never
>
'/dev/token': RouteRecordInfo<'/dev/token', '/dev/token', Record<never, never>, Record<never, never>, never>
}
/**
* Route file to route info map by vue-router.
* Used by the \`sfc-typed-router\` Volar plugin to automatically type \`useRoute()\`.
*
* Each key is a file path relative to the project root with 2 properties:
* - routes: union of route names of the possible routes when in this page (passed to useRoute<...>())
* - views: names of nested views (can be passed to <RouterView name="...">)
*
* @internal
*/
export interface _RouteFileInfoMap {
'src/pages/dev/index.vue': {
routes: '/dev/'
views: never
}
'src/pages/dev/colors.vue': {
routes: '/dev/colors'
views: never
}
'src/pages/dev/icons/index.vue': {
routes: '/dev/icons/'
views: never
}
'src/pages/dev/icons/[name].vue': {
routes: '/dev/icons/[name]'
views: never
}
'src/pages/dev/token.vue': {
routes: '/dev/token'
views: never
}
}
/**
* Get a union of possible route names in a certain route component file.
* Used by the \`sfc-typed-router\` Volar plugin to automatically type \`useRoute()\`.
*
* @internal
*/
export type _RouteNamesForFilePath<FilePath extends string> =
_RouteFileInfoMap extends Record<FilePath, infer Info> ? Info['routes'] : keyof RouteNamedMap
}
export {}

View File

@@ -171,6 +171,41 @@ declare module 'vue-router/auto-routes' {
{ id: ParamValue<false> },
| never
>,
'/dev/': RouteRecordInfo<
'/dev/',
'/dev',
Record<never, never>,
Record<never, never>,
| never
>,
'/dev/colors': RouteRecordInfo<
'/dev/colors',
'/dev/colors',
Record<never, never>,
Record<never, never>,
| never
>,
'/dev/icons/': RouteRecordInfo<
'/dev/icons/',
'/dev/icons',
Record<never, never>,
Record<never, never>,
| never
>,
'/dev/icons/[name]': RouteRecordInfo<
'/dev/icons/[name]',
'/dev/icons/:name',
{ name: ParamValue<true> },
{ name: ParamValue<false> },
| never
>,
'/dev/token': RouteRecordInfo<
'/dev/token',
'/dev/token',
Record<never, never>,
Record<never, never>,
| never
>,
'/host/[id]': RouteRecordInfo<
'/host/[id]',
'/host/:id',
@@ -648,6 +683,36 @@ declare module 'vue-router/auto-routes' {
views:
| never
}
'src/pages/dev/index.vue': {
routes:
| '/dev/'
views:
| never
}
'src/pages/dev/colors.vue': {
routes:
| '/dev/colors'
views:
| never
}
'src/pages/dev/icons/index.vue': {
routes:
| '/dev/icons/'
views:
| never
}
'src/pages/dev/icons/[name].vue': {
routes:
| '/dev/icons/[name]'
views:
| never
}
'src/pages/dev/token.vue': {
routes:
| '/dev/token'
views:
| never
}
'src/pages/host/[id].vue': {
routes:
| '/host/[id]'

View File

@@ -7,13 +7,14 @@ import vueRouter from 'vue-router/vite'
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
const { VITE_XO_REST_HOST } = loadEnv(mode, process.cwd())
const isDevMode = mode === 'development'
return {
base: './',
plugins: [
vueRouter({
dts: './src/route-map.d.ts',
exclude: mode !== 'development' ? ['src/pages/dev/**'] : [],
dts: isDevMode ? './src/route-map.d.ts' : false,
exclude: isDevMode ? [] : ['src/pages/dev/**'],
}),
vue(),
vueI18n({