diff --git a/src/config/resolvers/paths.ts b/src/config/resolvers/paths.ts index 1401ba1321..81e6002393 100644 --- a/src/config/resolvers/paths.ts +++ b/src/config/resolvers/paths.ts @@ -1,6 +1,6 @@ import { prettyPath, resolveNitroPath } from "../../utils/fs.ts"; import { runtimeDir } from "nitro/meta"; -import type { NitroOptions } from "nitro/types"; +import type { NitroOptions, NitroConfig } from "nitro/types"; import { join, resolve } from "pathe"; import { findWorkspaceDir } from "pkg-types"; import { NitroDefaults } from "../defaults.ts"; @@ -121,47 +121,53 @@ export async function resolvePathOptions(options: NitroOptions) { } } - // Resolve renderer handler - if (options.renderer?.handler) { - options.renderer.handler = resolveModulePath( - resolveNitroPath(options.renderer?.handler, options), - { - from: [options.rootDir, ...options.scanDirs], - extensions: RESOLVE_EXTENSIONS, - } - ); - } + if ((options as NitroConfig).renderer === false) { + // Skip (auto) resolve renderer, + // and reset it to meet "NitroOptions" requirements + options.renderer = undefined; + } else { + // Resolve renderer handler + if (options.renderer?.handler) { + options.renderer.handler = resolveModulePath( + resolveNitroPath(options.renderer?.handler, options), + { + from: [options.rootDir, ...options.scanDirs], + extensions: RESOLVE_EXTENSIONS, + } + ); + } - // Resolve renderer template - if (options.renderer?.template) { - options.renderer.template = resolveModulePath( - resolveNitroPath(options.renderer?.template, options), - { + // Resolve renderer template + if (options.renderer?.template) { + options.renderer.template = resolveModulePath( + resolveNitroPath(options.renderer?.template, options), + { + from: [options.rootDir, ...options.scanDirs], + extensions: [".html"], + } + )!; + } else if (!options.renderer?.handler) { + const defaultIndex = resolveModulePath("./index.html", { from: [options.rootDir, ...options.scanDirs], extensions: [".html"], + try: true, + }); + if (defaultIndex) { + options.renderer ??= {}; + options.renderer.template = defaultIndex; + consola.info( + `Using \`${prettyPath(defaultIndex)}\` as renderer template.` + ); } - )!; - } else if (!options.renderer?.handler) { - const defaultIndex = resolveModulePath("./index.html", { - from: [options.rootDir, ...options.scanDirs], - extensions: [".html"], - try: true, - }); - if (defaultIndex) { + } + + // Default renderer handler if template is set + if (options.renderer?.template && !options.renderer?.handler) { options.renderer ??= {}; - options.renderer.template = defaultIndex; - consola.info( - `Using \`${prettyPath(defaultIndex)}\` as renderer template.` + options.renderer.handler = join( + runtimeDir, + "internal/routes/renderer-template" + (options.dev ? ".dev" : "") ); } } - - // Default renderer handler if template is set - if (options.renderer?.template && !options.renderer?.handler) { - options.renderer ??= {}; - options.renderer.handler = join( - runtimeDir, - "internal/routes/renderer-template" + (options.dev ? ".dev" : "") - ); - } } diff --git a/src/types/config.ts b/src/types/config.ts index ab80a0afbd..d5c8b6902a 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -301,6 +301,7 @@ export interface NitroConfig | "_config" | "_c12" | "serverEntry" + | "renderer" > >, C12InputConfig { @@ -312,6 +313,7 @@ export interface NitroConfig unenv?: UnenvPreset | UnenvPreset[]; serverDir?: boolean | "./" | "./server" | (string & {}); serverEntry?: string | NitroOptions["serverEntry"]; + renderer?: false | NitroOptions["renderer"]; } // ------------------------------------------------------------