Skip to content

Commit c9a6247

Browse files
authored
fix(plugin-vite): merge Vite build.lib config (#3721)
1 parent 73e8190 commit c9a6247

File tree

4 files changed

+25
-18
lines changed

4 files changed

+25
-18
lines changed

packages/plugin/vite/src/ViteConfig.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import debug from 'debug';
2-
import { loadConfigFromFile, mergeConfig } from 'vite';
2+
import { loadConfigFromFile } from 'vite';
33

44
import { getConfig as getMainViteConfig } from './config/vite.main.config';
55
import { getConfig as getPreloadViteConfig } from './config/vite.preload.config';
@@ -31,14 +31,14 @@ export default class ViteConfigGenerator {
3131
};
3232

3333
// `configEnv` is to be passed as an arguments when the user export a function in `vite.config.js`.
34-
const userConfig = (await loadConfigFromFile(configEnv, buildConfig.config))?.config ?? {};
34+
const userConfig = (await loadConfigFromFile(configEnv, buildConfig.config))?.config;
3535
switch (target) {
3636
case 'main':
37-
return mergeConfig(getMainViteConfig(configEnv as ConfigEnv<'build'>), userConfig);
37+
return getMainViteConfig(configEnv as ConfigEnv<'build'>, userConfig);
3838
case 'preload':
39-
return mergeConfig(getPreloadViteConfig(configEnv as ConfigEnv<'build'>), userConfig);
39+
return getPreloadViteConfig(configEnv as ConfigEnv<'build'>, userConfig);
4040
case 'renderer':
41-
return mergeConfig(getRendererViteConfig(configEnv as ConfigEnv<'renderer'>), userConfig);
41+
return getRendererViteConfig(configEnv as ConfigEnv<'renderer'>, userConfig);
4242
default:
4343
throw new Error(`Unknown target: ${target}, expected 'main', 'preload' or 'renderer'`);
4444
}

packages/plugin/vite/src/config/vite.main.config.ts

+11-7
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,11 @@ import { type ConfigEnv, mergeConfig, type UserConfig } from 'vite';
22

33
import { external, getBuildConfig, getBuildDefine, pluginHotRestart } from './vite.base.config';
44

5-
export function getConfig(forgeEnv: ConfigEnv<'build'>): UserConfig {
5+
export function getConfig(forgeEnv: ConfigEnv<'build'>, userConfig: UserConfig = {}): UserConfig {
66
const { forgeConfigSelf } = forgeEnv;
77
const define = getBuildDefine(forgeEnv);
88
const config: UserConfig = {
99
build: {
10-
lib: {
11-
entry: forgeConfigSelf.entry,
12-
fileName: () => '[name].js',
13-
formats: ['cjs'],
14-
},
1510
rollupOptions: {
1611
external,
1712
},
@@ -24,6 +19,15 @@ export function getConfig(forgeEnv: ConfigEnv<'build'>): UserConfig {
2419
mainFields: ['module', 'jsnext:main', 'jsnext'],
2520
},
2621
};
22+
const buildConfig = getBuildConfig(forgeEnv);
23+
24+
if (userConfig.build?.lib == null) {
25+
config.build!.lib = {
26+
entry: forgeConfigSelf.entry,
27+
fileName: () => '[name].js',
28+
formats: ['cjs'],
29+
};
30+
}
2731

28-
return mergeConfig(getBuildConfig(forgeEnv), config);
32+
return mergeConfig(mergeConfig(buildConfig, config), userConfig);
2933
}

packages/plugin/vite/src/config/vite.preload.config.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { type ConfigEnv, mergeConfig, type UserConfig } from 'vite';
22

33
import { external, getBuildConfig, pluginHotRestart } from './vite.base.config';
44

5-
export function getConfig(forgeEnv: ConfigEnv<'build'>): UserConfig {
5+
export function getConfig(forgeEnv: ConfigEnv<'build'>, userConfig: UserConfig = {}): UserConfig {
66
const { forgeConfigSelf } = forgeEnv;
77
const config: UserConfig = {
88
build: {
@@ -22,6 +22,7 @@ export function getConfig(forgeEnv: ConfigEnv<'build'>): UserConfig {
2222
},
2323
plugins: [pluginHotRestart('reload')],
2424
};
25+
const buildConfig = getBuildConfig(forgeEnv);
2526

26-
return mergeConfig(getBuildConfig(forgeEnv), config);
27+
return mergeConfig(mergeConfig(buildConfig, config), userConfig);
2728
}
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { type ConfigEnv, type UserConfig } from 'vite';
1+
import { type ConfigEnv, mergeConfig, type UserConfig } from 'vite';
22

33
import { pluginExposeRenderer } from './vite.base.config';
44

55
// https://vitejs.dev/config
6-
export function getConfig(forgeEnv: ConfigEnv<'renderer'>) {
6+
export function getConfig(forgeEnv: ConfigEnv<'renderer'>, userConfig: UserConfig = {}) {
77
const { root, mode, forgeConfigSelf } = forgeEnv;
88
const name = forgeConfigSelf.name ?? '';
99

10-
return {
10+
const config: UserConfig = {
1111
root,
1212
mode,
1313
base: './',
@@ -19,5 +19,7 @@ export function getConfig(forgeEnv: ConfigEnv<'renderer'>) {
1919
preserveSymlinks: true,
2020
},
2121
clearScreen: false,
22-
} as UserConfig;
22+
};
23+
24+
return mergeConfig(config, userConfig);
2325
}

0 commit comments

Comments
 (0)