mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-16 21:58:19 +00:00
fix(kit): support chainable extendRoutes
in container (#1966)
This commit is contained in:
parent
07ba36d721
commit
232fdd8cf3
@ -2,8 +2,7 @@ import { parse, relative } from 'pathe'
|
|||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import type { Nuxt, NuxtPluginTemplate, NuxtTemplate } from '../types/nuxt'
|
import type { Nuxt, NuxtPluginTemplate, NuxtTemplate } from '../types/nuxt'
|
||||||
import { chainFn } from '../utils/task'
|
import { chainFn } from '../utils/task'
|
||||||
import { resolveAlias } from '../utils/resolve'
|
import { isNuxt2, addTemplate, addPluginTemplate, addServerMiddleware } from './utils'
|
||||||
import { addTemplate, addPluginTemplate, addServerMiddleware, extendPages } from './utils'
|
|
||||||
import { installModule } from './install'
|
import { installModule } from './install'
|
||||||
|
|
||||||
/** Legacy ModuleContainer for backwards compatibility with existing Nuxt 2 modules. */
|
/** Legacy ModuleContainer for backwards compatibility with existing Nuxt 2 modules. */
|
||||||
@ -104,7 +103,16 @@ export function createModuleContainer (nuxt: Nuxt) {
|
|||||||
|
|
||||||
/** Allows extending routes by chaining `options.build.extendRoutes` function. */
|
/** Allows extending routes by chaining `options.build.extendRoutes` function. */
|
||||||
extendRoutes (fn) {
|
extendRoutes (fn) {
|
||||||
extendPages(routes => fn(routes, resolveAlias))
|
if (isNuxt2(nuxt)) {
|
||||||
|
nuxt.options.router.extendRoutes = chainFn(nuxt.options.router.extendRoutes, fn)
|
||||||
|
} else {
|
||||||
|
nuxt.hook('pages:extend', async (pages, ...args) => {
|
||||||
|
const maybeRoutes = await fn(pages, ...args)
|
||||||
|
if (maybeRoutes) {
|
||||||
|
console.warn('[kit] [compat] Using `extendRoutes` in Nuxt 3 needs to directly modify first argument instead of returning updated routes. Skipping extended routes.')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/** `requireModule` is a shortcut for `addModule` */
|
/** `requireModule` is a shortcut for `addModule` */
|
||||||
|
@ -354,7 +354,11 @@ export function addComponent (opts: AddComponentOptions) {
|
|||||||
|
|
||||||
export function extendPages (cb: NuxtHooks['pages:extend']) {
|
export function extendPages (cb: NuxtHooks['pages:extend']) {
|
||||||
const nuxt = useNuxt()
|
const nuxt = useNuxt()
|
||||||
nuxt.hook('pages:extend', cb)
|
if (isNuxt2(nuxt)) {
|
||||||
|
nuxt.hook('build:extendRoutes', cb)
|
||||||
|
} else {
|
||||||
|
nuxt.hook('pages:extend', cb)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const serialize = (data: any) => JSON.stringify(data, null, 2).replace(/"{(.+)}"/g, '$1')
|
const serialize = (data: any) => JSON.stringify(data, null, 2).replace(/"{(.+)}"/g, '$1')
|
||||||
|
Loading…
Reference in New Issue
Block a user