diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index 7c7d1d18037174..279a05c1313045 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -367,6 +367,7 @@ async function doBuild( const config = await resolveConfig(inlineConfig, 'build', 'production') const options = config.build const ssr = !!options.ssr + const esm = config.ssr?.format === 'es' || !ssr const libOptions = options.lib config.logger.info( @@ -464,8 +465,8 @@ async function doBuild( return { dir: outDir, - format: ssr ? 'cjs' : 'es', - exports: ssr ? 'named' : 'auto', + format: esm ? 'es' : 'cjs', + exports: esm ? 'auto' : 'named', sourcemap: options.sourcemap, name: libOptions ? libOptions.name : undefined, entryFileNames: ssr diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index f73f4fb8662d6b..cc0ace3ef3d708 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -221,6 +221,12 @@ export interface SSROptions { * Default: 'node' */ target?: SSRTarget + + /** + * Define the module format for the ssr build. + * Default: 'cjs' + */ + format?: 'es' | 'cjs' } export interface ResolveWorkerOptions {