import type { ConfigEnv, UserConfig } from 'vite'
import { defineConfig, mergeConfig } from 'vite'
import { getBuildConfig, external, pluginHotRestart } from './vite.base.config'

// https://vitejs.dev/config
export default defineConfig(env => {
    const forgeEnv = env as ConfigEnv<'build'>
    const { forgeConfigSelf } = forgeEnv
    const config: UserConfig = {
        build: {
            rollupOptions: {
                external,
                // Preload scripts may contain Web assets, so use the `build.rollupOptions.input` instead `build.lib.entry`.
                input: forgeConfigSelf.entry!,
                output: {
                    format: 'cjs',
                    // It should not be split chunks.
                    inlineDynamicImports: true,
                    entryFileNames: '[name].js',
                    chunkFileNames: '[name].js',
                    assetFileNames: '[name].[ext]',
                },
            },
        },
        plugins: [pluginHotRestart('reload')],
    }

    return mergeConfig(getBuildConfig(forgeEnv), config)
})
