import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import federation from '@originjs/vite-plugin-federation'; import path from 'path'; const addonConfig = require('../addon.config.json') as { AddonUUID: string }; const filename = `file_${addonConfig.AddonUUID}`; export default defineConfig(({ mode }: { mode: string }) => { const isDevelopment = mode === 'development'; const isDevBlocks = mode === 'devblocks'; return { plugins: [ react(), federation({ name: filename, filename: `${filename}.js`, exposes: { './WebComponents': './src/bootstrap.tsx' }, shared: ['react', 'react-dom'] }) ], resolve: { alias: { '@': path.resolve(__dirname, './src') } }, define: { 'process.env.NODE_ENV': '"production"', global: 'globalThis' }, build: { outDir: '../publish', emptyOutDir: false, target: 'esnext', minify: isDevBlocks ? false : isDevelopment ? false : 'terser', sourcemap: isDevBlocks ? true : isDevelopment, modulePreload: false, cssCodeSplit: false, assetsDir: '', rollupOptions: { output: { entryFileNames: '[name].js', chunkFileNames: '[name].js', assetFileNames: '[name].[ext]', minifyInternalExports: false } } }, server: { port: 4400, strictPort: true, host: 'localhost' }, preview: { port: 4400 } }; });