From 98b0ed60a47a0bcf74d99bf94781876b887c86b1 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sat, 30 May 2026 08:45:06 +0100 Subject: [PATCH 1/2] feat(build): support custom framework preview/deploy commands --- src/build/rolldown/prod.ts | 6 ++++-- src/build/vite/prod.ts | 6 ++++-- src/types/nitro.ts | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/build/rolldown/prod.ts b/src/build/rolldown/prod.ts index b241f8bbec..234248eb9d 100644 --- a/src/build/rolldown/prod.ts +++ b/src/build/rolldown/prod.ts @@ -48,10 +48,12 @@ export async function buildProduction(nitro: Nitro, config: RolldownOptions) { const rewriteRelativePaths = (input: string) => { return input.replace(/([\s:])\.\/(\S*)/g, `$1${rOutput}/$2`); }; - nitro.logger.success("You can preview this build using `npx nitro preview`"); + const previewCommand = nitro.options.framework.previewCommand || "npx nitro preview"; + nitro.logger.success(`You can preview this build using \`${previewCommand}\``); if (buildInfo.commands!.deploy) { + const deployCommand = nitro.options.framework.deployCommand || "npx nitro deploy --prebuilt"; nitro.logger.success( - rewriteRelativePaths("You can deploy this build using `npx nitro deploy --prebuilt`") + rewriteRelativePaths(`You can deploy this build using \`${deployCommand}\``) ); } } diff --git a/src/build/vite/prod.ts b/src/build/vite/prod.ts index 3c20ebc758..4e9deda33a 100644 --- a/src/build/vite/prod.ts +++ b/src/build/vite/prod.ts @@ -120,9 +120,11 @@ export async function buildEnvironments(ctx: NitroPluginContext, builder: ViteBu // Show deploy and preview commands if (!isTest && !isCI) console.log(); - nitro.logger.success("You can preview this build using `npx vite preview`"); + const previewCommand = nitro.options.framework.previewCommand || "npx nitro preview"; + nitro.logger.success(`You can preview this build using \`${previewCommand}\``); if (nitro.options.commands.deploy) { - nitro.logger.success("You can deploy this build using `npx nitro deploy --prebuilt`"); + const deployCommand = nitro.options.framework.deployCommand || "npx nitro deploy --prebuilt"; + nitro.logger.success(`You can deploy this build using \`${deployCommand}\``); } } diff --git a/src/types/nitro.ts b/src/types/nitro.ts index 5392726cb7..dbf6be5bd8 100644 --- a/src/types/nitro.ts +++ b/src/types/nitro.ts @@ -69,6 +69,22 @@ export type NitroTypes = { export interface NitroFrameworkInfo { name?: "nitro" | (string & {}); version?: string; + /** + * Command shown in build output as the suggested preview command. + * + * Display-only: Nitro never executes this. Use this when the framework + * wraps `nitro preview` with its own CLI (e.g. `npx nuxt preview`). + * Defaults to `npx nitro preview`. + */ + previewCommand?: string; + /** + * Command shown in build output as the suggested deploy command. + * + * Display-only: Nitro never executes this. Use this when the framework + * wraps `nitro deploy` with its own CLI (e.g. `npx nuxt deploy`). + * Defaults to `npx nitro deploy --prebuilt`. + */ + deployCommand?: string; } /** From c83b68cf344a3ccd16e2eb16bf2047fbd6ef217b Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 31 May 2026 09:20:46 +0100 Subject: [PATCH 2/2] fix: keep 'vite preview' --- src/build/vite/prod.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/vite/prod.ts b/src/build/vite/prod.ts index 4e9deda33a..53618a8a90 100644 --- a/src/build/vite/prod.ts +++ b/src/build/vite/prod.ts @@ -120,7 +120,7 @@ export async function buildEnvironments(ctx: NitroPluginContext, builder: ViteBu // Show deploy and preview commands if (!isTest && !isCI) console.log(); - const previewCommand = nitro.options.framework.previewCommand || "npx nitro preview"; + const previewCommand = nitro.options.framework.previewCommand || "npx vite preview"; nitro.logger.success(`You can preview this build using \`${previewCommand}\``); if (nitro.options.commands.deploy) { const deployCommand = nitro.options.framework.deployCommand || "npx nitro deploy --prebuilt";