diff --git a/packages/wxt/src/core/resolve-config.ts b/packages/wxt/src/core/resolve-config.ts
index 4b1486e8..946f6aaf 100644
--- a/packages/wxt/src/core/resolve-config.ts
+++ b/packages/wxt/src/core/resolve-config.ts
@@ -104,13 +104,15 @@ export async function resolveConfig(
production: '',
development: '-dev',
};
+ const modeSuffix = modeSuffixes[mode] ?? `-${mode}`;
const outDirTemplate = (
- mergedConfig.outDirTemplate ?? `${browser}-mv${manifestVersion}`
+ mergedConfig.outDirTemplate ??
+ `${browser}-mv${manifestVersion}${modeSuffix}`
)
// Resolve all variables in the template
.replaceAll('{{browser}}', browser)
.replaceAll('{{manifestVersion}}', manifestVersion.toString())
- .replaceAll('{{modeSuffix}}', modeSuffixes[mode] ?? `-${mode}`)
+ .replaceAll('{{modeSuffix}}', modeSuffix)
.replaceAll('{{mode}}', mode)
.replaceAll('{{command}}', command);
diff --git a/packages/wxt/src/types.ts b/packages/wxt/src/types.ts
index 20b352eb..07aa4b47 100644
--- a/packages/wxt/src/types.ts
+++ b/packages/wxt/src/types.ts
@@ -63,8 +63,8 @@ export interface InlineConfig {
* - `{{modeSuffix}}`: A suffix based on the mode ('-dev' for development, '' for production)
* - `{{command}}`: The WXT command being run (e.g., 'build', 'serve')
*
- * @example "{{browser}}-mv{{manifestVersion}}{{modeSuffix}}"
- * @default `"{{browser}}-mv{{manifestVersion}}"`
+ * @example "{{browser}}-mv{{manifestVersion}}"
+ * @default `"{{browser}}-mv{{manifestVersion}}{{modeSuffix}}"`
*/
outDirTemplate?: string;
/**