import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import { viteStaticCopy } from 'vite-plugin-static-copy'; import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; import inject from '@rollup/plugin-inject'; import topLevelAwait from 'vite-plugin-top-level-await'; import buildConfig from './build.config'; const copyFiles = { targets: [ ], }; export default defineConfig({ appType: 'spa', publicDir: false, base: buildConfig.base, server: { port: 8080, host: '0.0.0.0' }, plugins: [ topLevelAwait({ // The export name of top-level await promise for each chunk module promiseExportName: '__tla', // The function to generate import names of top-level await promise in each chunk module promiseImportName: (i) => `__tla_${i}`, }), viteStaticCopy(copyFiles), vanillaExtractPlugin(), react(), ], optimizeDeps: { esbuildOptions: { define: { global: 'globalThis', }, plugins: [ // Enable esbuild polyfill plugins NodeGlobalsPolyfillPlugin({ process: false, buffer: true }), ], }, }, build: { outDir: 'dist', sourcemap: true, copyPublicDir: false, rollupOptions: { plugins: [inject({ Buffer: ['buffer', 'Buffer'] })], }, }, });