diff --git a/docs/3.api/5.kit/7.pages.md b/docs/3.api/5.kit/7.pages.md index 9e6ffab3bc..7e7dd6e8d3 100644 --- a/docs/3.api/5.kit/7.pages.md +++ b/docs/3.api/5.kit/7.pages.md @@ -209,6 +209,7 @@ type NuxtMiddleware = { interface AddRouteMiddlewareOptions { override?: boolean + prepend?: boolean } ``` @@ -246,7 +247,21 @@ A middleware object or an array of middleware objects with the following propert **Default**: `{}` -Options to pass to the middleware. If `override` is set to `true`, it will override the existing middleware with the same name. +- `override` (optional) + + **Type**: `boolean` + + **Default**: `false` + + If enabled, overrides the existing middleware with the same name. + +- `prepend` (optional) + + **Type**: `boolean` + + **Default**: `false` + + If enabled, prepends the middleware to the list of existing middleware. ### Examples @@ -272,7 +287,7 @@ export default defineNuxtModule({ name: 'auth', path: resolver.resolve('runtime/auth.ts'), global: true - }) + }, { prepend: true }) } }) ``` diff --git a/packages/kit/src/pages.ts b/packages/kit/src/pages.ts index b2fda348e3..35c73fae83 100644 --- a/packages/kit/src/pages.ts +++ b/packages/kit/src/pages.ts @@ -35,6 +35,11 @@ export interface AddRouteMiddlewareOptions { * @default false */ override?: boolean + /** + * Prepend middleware to the list + * @default false + */ + prepend?: boolean } export function addRouteMiddleware (input: NuxtMiddleware | NuxtMiddleware[], options: AddRouteMiddlewareOptions = {}) { @@ -51,6 +56,8 @@ export function addRouteMiddleware (input: NuxtMiddleware | NuxtMiddleware[], op } else { logger.warn(`'${middleware.name}' middleware already exists at '${foundPath}'. You can set \`override: true\` to replace it.`) } + } else if (options.prepend === true) { + app.middleware.unshift({ ...middleware }) } else { app.middleware.push({ ...middleware }) }