diff --git a/src/config.ts b/src/config.ts index 33276cb..65a6403 100644 --- a/src/config.ts +++ b/src/config.ts @@ -36,7 +36,7 @@ import { isObject, isFilePathESM, deepClone, asyncFlatten } from './utils' export { defineConfig as defineViteConfig } from 'vite' -interface IsolatedEntriesOption { +interface IsolatedEntriesMixin { /** * Build each entry point as an isolated bundle without code splitting. * @@ -44,6 +44,11 @@ interface IsolatedEntriesOption { * preventing automatic code splitting across entries and ensuring each * output file is fully standalone. * + * **Important**: When using `isolatedEntries` in `preload` config, you + * should also disable `build.externalizeDeps` to ensure third-party dependencies + * from `node_modules` are bundled together, which is required for Electron + * sandbox support. + * * @experimental * @default false */ @@ -73,9 +78,9 @@ interface BytecodeMixin { interface MainBuildOptions extends ViteBuildOptions, ExternalizeDepsMixin, BytecodeMixin {} -interface PreloadBuildOptions extends ViteBuildOptions, ExternalizeDepsMixin, BytecodeMixin {} +interface PreloadBuildOptions extends ViteBuildOptions, ExternalizeDepsMixin, BytecodeMixin, IsolatedEntriesMixin {} -interface RendererBuildOptions extends ViteBuildOptions {} +interface RendererBuildOptions extends ViteBuildOptions, IsolatedEntriesMixin {} interface BaseViteConfig extends Omit { /** @@ -86,9 +91,9 @@ interface BaseViteConfig extends Omit { export interface MainViteConfig extends BaseViteConfig {} -export interface PreloadViteConfig extends BaseViteConfig, IsolatedEntriesOption {} +export interface PreloadViteConfig extends BaseViteConfig {} -export interface RendererViteConfig extends BaseViteConfig, IsolatedEntriesOption {} +export interface RendererViteConfig extends BaseViteConfig {} export interface UserConfig { /** @@ -246,7 +251,7 @@ export async function resolveConfig( ...configDrivenPlugins ] - if (preloadViteConfig.isolatedEntries) { + if (preloadViteConfig.build?.isolatedEntries) { builtInPreloadPlugins.push( isolateEntriesPlugin( mergeConfig( @@ -284,7 +289,7 @@ export async function resolveConfig( electronRendererConfigValidatorPlugin() ] - if (rendererViteConfig.isolatedEntries) { + if (rendererViteConfig.build?.isolatedEntries) { builtInRendererPlugins.push( isolateEntriesPlugin( mergeConfig(