monitor/panel/vite.config.ts
2025-04-16 22:30:27 +07:00

73 lines
2.1 KiB
TypeScript

import path from 'node:path';
import { visualizer } from "rollup-plugin-visualizer";
import { PluginOption, UserConfig, defineConfig } from 'vite';
import react from '@vitejs/plugin-react-swc';
// import tsconfigPaths from 'vite-tsconfig-paths';
import { licenseBanner } from '../scripts/build/utils';
import { parseTxDevEnv } from '../shared/txDevEnv';
process.loadEnvFile('../.env');
//Check if TXDEV_VITE_URL is set
const txDevEnv = parseTxDevEnv();
if (!txDevEnv.VITE_URL) {
console.error('Missing TXDEV_VITE_URL env variable.');
process.exit(1);
}
const baseConfig = {
build: {
emptyOutDir: true,
outDir: '../dist/panel',
minify: true,
sourcemap: undefined, // placeholder
// generate manifest.json in outDir
manifest: true,
rollupOptions: {
input: undefined, //placeholder
output: {
banner: licenseBanner('..', true),
//Adding hash to help with cache busting
hashCharacters: 'base36',
entryFileNames: `[name]-[hash].v800.js`,
chunkFileNames: `[name]-[hash].v800.js`,
assetFileNames: '[name]-[hash].v800.[ext]',
}
},
},
server: {
origin: undefined, //placeholder
},
base: '',
clearScreen: false,
plugins: [
react(),
visualizer({
// template: 'flamegraph',
// template: 'sunburst',
gzipSize: true,
filename: '../.reports/panel_bundle.html',
}),
] as PluginOption[], //i gave up
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
"@shared": path.resolve(__dirname, "../shared"),
},
},
} satisfies UserConfig;
// https://vitejs.dev/config/
export default defineConfig(({ command }) => {
if (command === 'serve') {
baseConfig.server.origin = txDevEnv.VITE_URL;
baseConfig.build.rollupOptions.input = './src/main.tsx'; // overwrite default .html entry
return baseConfig;
} else {
baseConfig.build.sourcemap = true;
return baseConfig;
}
})