From dbde5660d119a2c74a41dc9358272cb1ba1d5978 Mon Sep 17 00:00:00 2001 From: "Mr.Hope" Date: Tue, 19 May 2026 16:47:23 +0800 Subject: [PATCH 1/2] feat(bundler-vite): add configVite option --- .../bundler-vite/src/resolveViteConfig.ts | 20 +++++++++++++++++-- packages/bundler-vite/src/types.ts | 5 +++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/bundler-vite/src/resolveViteConfig.ts b/packages/bundler-vite/src/resolveViteConfig.ts index 63f979519a..9058a57b8c 100644 --- a/packages/bundler-vite/src/resolveViteConfig.ts +++ b/packages/bundler-vite/src/resolveViteConfig.ts @@ -22,8 +22,9 @@ export const resolveViteConfig = ({ options: ViteBundlerOptions isBuild: boolean isServer: boolean -}): InlineConfig => - mergeConfig( +}): InlineConfig => { + // generate base vite config + let viteConfig = mergeConfig( { clearScreen: false, configFile: false, @@ -43,3 +44,18 @@ export const resolveViteConfig = ({ // some vite options would not take effect inside a plugin, so we still need to merge them here in addition to userConfigPlugin options.viteOptions ?? {}, ) + + // allow modifying vite config via `configureVite` + const configureViteResult = options.configureVite?.( + viteConfig, + isServer, + isBuild, + ) + + // if `configureVite` returns a configuration object, use vite's mergeConfig to merge it + if (configureViteResult) { + viteConfig = mergeConfig(viteConfig, configureViteResult) + } + + return viteConfig +} diff --git a/packages/bundler-vite/src/types.ts b/packages/bundler-vite/src/types.ts index dde557c177..70be27637d 100644 --- a/packages/bundler-vite/src/types.ts +++ b/packages/bundler-vite/src/types.ts @@ -8,4 +8,9 @@ import type { InlineConfig } from 'vite' export interface ViteBundlerOptions extends BundlerOptions { viteOptions?: InlineConfig vuePluginOptions?: VuePluginOptions + configureVite?: ( + config: InlineConfig, + isServer: boolean, + isBuild: boolean, + ) => InlineConfig | void } From d705253ee86a24566c3b42a1dafbf3e128e6a8f4 Mon Sep 17 00:00:00 2001 From: "Mr.Hope" Date: Wed, 20 May 2026 10:47:46 +0800 Subject: [PATCH 2/2] chore: add comments --- packages/bundler-vite/src/types.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/bundler-vite/src/types.ts b/packages/bundler-vite/src/types.ts index 70be27637d..1afe2d7857 100644 --- a/packages/bundler-vite/src/types.ts +++ b/packages/bundler-vite/src/types.ts @@ -6,8 +6,22 @@ import type { InlineConfig } from 'vite' * Options for bundler-vite */ export interface ViteBundlerOptions extends BundlerOptions { + /** + * Vite options + */ viteOptions?: InlineConfig + /** + * Options for @vitejs/plugin-vue + */ vuePluginOptions?: VuePluginOptions + /** + * Modify Vite config + * + * @param config - Vite config + * @param isServer - Whether it is server bundle + * @param isBuild - Whether in build mode + * @returns Vite config to be merged with the default config + */ configureVite?: ( config: InlineConfig, isServer: boolean,